自动创建bash脚本文件头的脚本和alias

Shell Me, Lius 1399℃ 0评论

经常写脚本,就需要经常写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

 

转载请注明:liutianfeng.com » 自动创建bash脚本文件头的脚本和alias

喜欢 (2)

发表回复