shell脚本的选项
比较复杂的shell脚本通常都会支持多个选项及其输入. 通常形式为-[a-z,A-Z] [filename/settings]
. 在控制台输入脚本名称时,还会显示出帮助信息.
显示帮助
可以定义一个Usage() {}函数作为脚本的帮助函数, 当帮助信息比较简单的时候,可以echo命令实现, 当参数比较多的时候,可以用cat工具配合EOF符号来定义大段的说明文字. 例如:
Usage()
{
cat <<EOF
bet <input> <output> [options]
-d debug (do not delete temporary intermediate images)
EOF
exit 1
}
# 显示帮助
[ "$1" = "" ] && Usage
这里bet命令的调用格式定义为:bet <input> <output> [options]
,这也是一种常见的shell脚本参数格式. 当options比较多的时候,shell脚本没有python里面argpase这样的工具包, 应该如何解析这些参数设置呢? 这时候还是要具体问题具体分析. 实际上,shell脚本对参数的读取和解析也是非常灵活的.
简单的选项参数
如果参数只是类似于-a, -N这种简单的标识符. 可以用简单的if …then … fi 语句解析:
if [ $1 = -a ] ; then
REG="-a"
HOWLONG=5
fi
复杂的选项参数
如果参数后面还有具体的配置文件名称或者选项,也就是说 -a, -N这类前缀后续还有具体的设置字符串, 例如参数说明如下:
-T <minutes> Estimated job length in minutes, used to auto-set queue name
-q <queuename> Possible values for <queuename> are "verylong.q", "long.q"
and "short.q". See below for details
Default is "long.q".
-a <arch-name> Architecture [e.g., darwin or lx24-amd64]
-p <job-priority> Lower priority [0:-1024] default = 0
-M <email-address> Who to email, default = `whoami`@fmri