我有一個腳本:缺少的參數設置參數下一個選項
#!/bin/bash
i_flag=false
v_flag=false
while getopts ":i:v:" opt; do
case $opt in
i ) i_flag=true; echo $OPTARG;;
v ) v_flag=true; echo $OPTARG;;
\?) echo Unknown option: -$OPTARG >&2; exit 1;;
: ) echo "Missing option argument for -OPTARG" >&2; exit 1;;
esac
done
echo $i_flag
echo $v_flag
當我運行此不設置任何選項,我得到:
# ./opts_script.sh -i -v
-v
true
false
什麼我希望看到的是兩個選項的輸出都表明沒有參數已被傳遞。但是,-i
選項的參數爲-v
,並將i_flag
變量設置爲true
。然後它將v_flag
變量設置爲false,因爲它沒有將其視爲選項。
我也使用了while getopts ":iv:" opts; do
,因此-i
選項不會將下一個選項作爲其參數。然而,這是不受歡迎的,因爲它允許選項被取消設置;不是我想要的。
因此,我的問題是:是否可以確保所有提供的選項都有參數,並且如果沒有提供參數,那些參數不是下一個選項?如果是這樣,怎麼樣?