获取shell脚本的命令
使用option简单获取
for option
do
echo option is $option
done
运行如下
# input
bash ./option.sh -a="123" -b='456' -c=789
# output
-a=123
-b=456
-c=789
获取=号后面的值
case "$option" in
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
*) value="" ;;
esac
echo value is $value
指定参数值
以下shell片段,如果发现参数非脚本指定,就会报错
case "$option" in
--help) help=yes ;;
--prefix=) NGX_PREFIX="!" ;;
--prefix=*) NGX_PREFIX="$value" ;;
--sbin-path=*) NGX_SBIN_PATH="$value" ;;
--conf-path=*) NGX_CONF_PATH="$value" ;;
*)
echo "$0: error: invalid option \"$option\""
exit 1
;;
esac
case in ...; esac
类似c语言的switch case
用法;;
相当于break
- 如
--sbin-path=*
的*
是正则的通配符 )
是给条件与执行语句的划界限
感言
- shell脚本的参数,可使用
getopt
工具获取,可笔者觉得用法有点麻烦,认为自己写这样易读易懂一个简单版本比较好 - 该脚本是笔者研究nginx源码时看到nginx的configure的脚本获得启发