描述:
(1)使用该脚本实现自动生成脚本头部信息功能(Author、Time、Description…);并且判断所给名称参数,若脚本存在就直接打开并移动光标到命令开始位置编辑,若脚本不存在,就新建并打开。
(2)拓展:给脚本加参数功能,执行时传递参数给脚本,使用 -a 后跟 author 值;-d 跟对脚本的描述;-s 跟用户新建脚本执行时候的shell,并且用户如果不传递shell时候,需要默认shell为/bin/bash;在脚本写完后,自动给脚本加上用户执行权限。
看图说话:
(1)
(2)代码段:
- #!/bin/bash
- #Author: Mo
- #Date & Time: 2011-01-14-11:19:20
- #Description:
- #Version : 1.0.1
- #
- usag() {
- echo "Wrong Option!"
- echo -e " \033[31m USAG:\033[0m`basename $0` [-a authou] [-d description] [-s shell] scriptname"
- exit 1
- }
- while getopts ":a:d:s:" SWITCH ; do
- case $SWITCH in
- a)
- AUTHOR=$OPTARG
- ;;
- d)
- DESCRIBE=$OPTARG
- ;;
- s)
- SHELL=$OPTARG
- ;;
- \?)
- usag
- ;;
- esac
- done
- shift $[OPTIND-1]
- DESH=/bin/bash
- if ! grep '^#!/bin/.*' $1 &>/dev//null ; then
- cat >> $1 << EOF
- #!${SHELL:=$DESH}
- #Author: ${AUTHOR}
- #Date & Time: `date +%F-%T`
- #Description: ${DESCRIBE}
- #Version : 1.0.1
- EOF
- fi
- vim +7 $1
- wait
- chmod u+x $1
知识:
wait命令:脚本中不加参数使用时,可以等待前面命令全部执行完成后在执行后续命令。
sleep N: 在脚本中,有时会有后一个命令需要前一个命令执行结束的支持,但是若前一个命令执行时间较长,不进行特殊处理,会使前一个命令未正确执行结束后一个命令就执行,从而造成错误,可以在两个命令之间添加该行命令,意思为暂停N秒后执行下一条命令;以此来避免某些错误;
- command1
- sleep 10 命令一执行时,暂停10s再执行command2
- command2