此脚本只是练习(存在冗余代码)函数使用方法、判断及循环。如完善代码后可在/bin下生成连接脚本,随时使用。
1 #!/bin/bash
2 #Author:samrtwy(WeChat:smart_wy)
3 #Version:2.1
4 #Date:2017-05-13
5 #Descripton: add script description info for option
6 #
7
8 filename=$(cd $(dirname $1) && pwd)/$1 || exit 1 #获取文件的完全路径,失败退出
9
10 function option() { #option 函数声明
11 for tm in $@ #循环处理选项
12 do
13 arg=$1
14 meg=$2
15 case $arg in #处理传递的参数
16 -a|--author)
17 sed -i "/[Aa]uthor/d" $filename # 删除旧信息
18 sed -i "2c# Author: ${meg}" $filename # 添加新信息
19 [ $? -eq 0 ] && echo -e "Add Autor OK !\n" # 提示添加成功
20 shift 2 # 切掉处理过的参数,下同
21 [[ -z $@ ]] && exit 0 # 如果没有参数退出
22 ;;
23 -t|--time)
24 sed -i "/[Tt]ime/d" $filename
25 sed -i "3c# Time: ${meg}" $filename
26 [ $? -eq 0 ] && echo -e "Add Time OK !\n"
27 shift 2
28 [[ -z $@ ]] && exit 0
29 ;;
30 -d|--description)
31 sed -i "/[Dd]escription/d" $filename
32 sed -i "5c# Description:${meg}" $filename
33 [ $? -eq 0 ] && echo -e "Add Description OK !\n"
34 shift 2
35 [[ -z $@ ]] && exit 0
36 ;;
37 -v|--version)
38 sed -i "/[Vv]ersion/d" $filename
39 sed -i "4c# Version: ${meg}" $filename
40 [ $? -eq 0 ] && echo -e "Add Version OK !\n"
41 shift 2
42 [[ -z $@ ]] && exit 0
43 ;;
44 -h|--help)
45 cat << EOF
46 Usage: scriptname [-a|--author USER] [-t|--time DATE] [-d|--descript MESSAGE] [-v|--version DIGIT] [-h|--help]"
47 EOF
48 exit 1
49 ;;
50 *) # 以上参数外的参数执行此处代码
51 cat << EOF
52 Usage: scriptname [-a|--author USER] [-t|--time DATE] [-d|--descript MESSAGE] [-v|--version DIGIT] [-h|--help]"
53 EOF
54 exit 2
55 ;;
56 esac
57 done
58 }
59
60 function sai() { # sai函数声明
61 if [ ! -s $filename ]
62 then
63 shift #将$1切掉,后面只处理其他位置参数
64 echo -e '#!/bin/bash\n\n\n\n' > $filename
65 option $@ #调用option函数,将剩余位置参数传递给option
73 else
66 elif [ -f $filename ]
67 then
68 shift #将$1切掉,后面只处理其他位置参数
69 read -p "The file no empty ! Whether to continue?(Y/N):" YN
70 [[ $YN =~ [Yy] ]] || exit 1
71 sed -i 's@^#!.*$@#!/bin/bash@g' $filename #更新shabang
72 option $@ #调用option函数,将剩余位置参数传递给option
73 else
74 echo "ERROR !"
75 fi
76 }
77
78 sai "$@" #调用sai函数,将位置参数传递给sai