经常写脚本,就需要经常写Sha-Bang(Sharp bang, #!),难免会比较麻烦。这里就将自动生成Sha-Bang的脚本写一下,并做成别名,方便脚本的撰写。
首先,建立create.sh,输入如下内容:
#!/bin/bash
# Create shell script sha-bang automatically...
if [ $# -lt 1 ]; then
echo "One argument is needed. Please try again!"
exit 4
fi
SNAME=$1
if [ -e $SNAME ]; then
echo "File exist. Exit!"
exit 3
fi
touch $SNAME
echo "#!/bin/bash
# Usage:
# Date: `date +%F`
# ScriptName: $1
# Author: Liemer_Lius
" >| $SNAME
chmod +x $SNAME
vim +2 $SNAME
脚本中,第一个if语句是防止不加参数,第二个if语句是防止已有文件而报错。
时间会自动到脚本里面,创建文件以后,将默认的信息echo进入新建的脚本,最后留几行空行,方便输入内容。另外,默认vim打开,并到第二行,方便添加脚本的功能注释。
最后,将脚本赋予x权限,以便脚本的执行。
接下来就是将其做成别名:
# vim ~/.bashrc
alias create='~/create.sh'
# source ~/.bashrc
# create g.sh
# create g.sh // 重复会报告
File exist. exit!
# create // 没有参数会提醒,两者都自动退出脚本
You should define a script name in your options. Exit!
注:Python脚本的Sha-Bang也是可以这样来进行的。
另一个shabang的脚本要求如下:
1、判断是否有参数,没有参数提示并退出脚本;
2、当文件已经存在的时候,看看文件中是否有内容
如果有内容,就打开文件,并到最后一行;
如果没有内容,echo相应的shabang信息到脚本中,同时打开文件最后一行;
3、当脚本有语法错误的时候,一直到用户输入q|quit的时候才退出脚本执行,键入其他任意字符都继续编辑脚本。但是,这时候的错误信息应该不定位到/dev/null中,以便对自己有些提示;
#!/bin/bash
#
# Date: 2018-01-09
# Script Name: shabang.sh
# Author: Liemer_Lius
if [ $# -lt 1 ]; then
echo "Script name should be defined."
exit 3
fi
if ! grep "[^[:space:]]" $1 &>/dev/null; then
cat > $1 << EOF
#!/bin/bash
# Discription:
# Author: Lius
# Name: `basename $1`
# Version: 0.0.1
# Datetime: `date "+%F %T"`
EOF
fi
vim + $1
until bash -n $1; do
read -p "Syntax error, q|quit for editing: " OPT
case $OPT in
q|quit)
echo "Quit!"
exit 5
;;
*)
vim + $1
;;
esac
done
chmod +x $1
发表回复
要发表评论,您必须先登录。