面试题答案
一键面试#!/bin/bash
# 1. 获取文件名
echo "请输入文件名:"
read file_name
# 2. 获取当前年份
current_year=$(date +%Y)
# 3. 获取公司名称
echo "请输入公司名称:"
read company_name
# 4. 获取特定字符串
echo "请输入要定位的特定字符串:"
read target_string
# 5. 使用vim在文件头部添加版权声明注释块
echo -e "\n# Copyright (c) $current_year $company_name" | vim - $file_name <<EOF
:wq
EOF
# 6. 使用nano打开文件并定位到特定字符串所在行,在行首添加特殊标记
nano +$(grep -n "$target_string" $file_name | head -n 1 | cut -d: -f1) $file_name <<EOF
# 定位到特定字符串所在行,在行首添加特殊标记
# 这里在nano中没有直接实现自动在行首添加标记的方法,
# 实际使用时用户可手动在行首添加 '>>> '
EOF
解释:
- 获取文件名:通过
echo
提示用户输入文件名,使用read
读取用户输入并赋值给file_name
变量。 - 获取当前年份:利用
date +%Y
命令获取当前年份并赋值给current_year
变量。 - 获取公司名称:通过
echo
提示用户输入公司名称,使用read
读取用户输入并赋值给company_name
变量。 - 获取特定字符串:通过
echo
提示用户输入要定位的特定字符串,使用read
读取用户输入并赋值给target_string
变量。 - 使用vim添加版权声明:
echo -e "\n# Copyright (c) $current_year $company_name"
生成版权声明内容,| vim - $file_name <<EOF
和wq
将生成的内容写入文件头部并保存退出vim。 - 使用nano定位并添加标记:
nano +$(grep -n "$target_string" $file_name | head -n 1 | cut -d: -f1) $file_name
定位到包含特定字符串的第一行并打开文件,由于nano没有简单的命令直接在行首添加内容,所以这里只是打开文件定位到该行,用户可手动在行首添加>>>
。