您可以連接您提供的選項,getopts
將它們分開。在您的case
聲明中,您將分別處理每個選項。
您可以在看到選項時設置一個標誌,並檢查以確保在getopts
循環完成後確保有強制性「選項」(!)。
下面是一個例子:
#!/bin/bash
rflag=false
small_r=false
big_r=false
usage() { echo "How to use"; }
options=':ij:rRvh'
while getopts $options option
do
case $option in
i ) i_func;;
j ) j_arg=$OPTARG;;
r ) rflag=true; small_r=true;;
R ) rflag=true; big_r=true;;
v ) v_func; other_func;;
h ) usage; exit;;
\?) echo "Unknown option: -$OPTARG" >&2; exit 1;;
: ) echo "Missing option argument for -$OPTARG" >&2; exit 1;;
* ) echo "Unimplemented option: -$OPTARG" >&2; exit 1;;
esac
done
shift $(($OPTIND - 1))
if ! $rflag && [[ -d $1 ]]
then
echo "-r or -R must be included when a directory is specified" >&2
exit 1
fi
這代表getopts
功能的完整參考實施,但僅是一個較大的腳本的一個草圖。
非常感謝丹尼斯。按照你的建議,我使用了這些標誌。我嘗試通過連接選項並將它們存儲在變量中並稍後根據所提供的選項進行處理來簡化邏輯。 –
@RameshSamane:不客氣。如果您發現我的答案有幫助,請將其標記爲已接受。 –
我已經試過,但得到消息「投票需要15聲望」。不過,我在線索底部點擊了「是」,問題是「這篇文章對你有用嗎?」並獲得了「感謝您的反饋」的信息。 –