shell脚本:深入理解getopts用法
一、初步理解getopts用法
getopts用于捕获脚本命令中的选项、参数,例如命令 flume.sh -e test -g flume -t teflume.yaml -p package/playbook.yml,getopts能将-e选项对应的值保存到ENV中,-g选项对应的值保存到GROUP中,-t选项的值保存到TYPE中,-p选项中的值保存到PLAYBOOK中。
getopts命令格式:
- getopts OPTSTRING VAR
- getopts ‘e:g:t:p:’ var
二、详解getopts用法实例
while getopts 'e:g:t:p:' var; do
case $var in
e)
ENV="$OPTARG"
;;
g)
GROUP="$OPTARG"
;;
t)
TYPE="$OPTARG"
;;
p)
PLAYBOOK="$OPTARG"
;;
?)
usage
;;
esac
done
- 字母后跟冒号:表示这个选项后要跟一个值,例如e: ,字母后不跟冒号,表示这个选项后可以不跟值。
- OPTARG: 获取当前选项的值
- OPTIND:当前选项在参数列表中的位移
执行命令:
flume.sh -e test -g flume -t teflume.yaml -p package/playbook.yml,
结果如下所示:
- ENV值为test
- GROUP值为flume
- TYPE值为teflume.yaml
- PLAYBOOK值为:playbook.yml