while getopts a:b: opt #注釋1
# while getopts :a:b: opt #注釋2
do
case $opt in
a|b)
echo "選項:[$opt] 值: [$OPTARG]"
;;
:)
echo "選項 [-$OPTARG] 沒有傳值"
exit 1
;;
?)
echo "傳入了無效選項 [-$OPTARG]"
exit 2
;;
esac
done
注釋1
冒號
跟在字母后面
代表要傳入?yún)?shù).
注釋2
最前面的冒號[:]用于指定getopts工作于silent mode巩步,在silent模式下贵白,當(dāng)用戶輸入的參數(shù)不滿足OPTSTRING時甸私,不會將illegal option這樣的錯誤信息打印出來罗丰,使代碼看起來更加專業(yè)赋访。如果想要工作在verbose模式下律罢,可以去掉最前面的冒號。
范例如下:
上面的例子里, 前面[沒有]冒號
while getopts a:b: opt
運行
bash go.sh -a
結(jié)果為
go.sh: option requires an argument -- a
傳入了無效選項 [-]
上面的例子里, 前面[有]冒號
while getopts :a:b: opt
運行
bash go.sh -a
結(jié)果為
選項 [-a] 沒有傳值