簡體   English   中英

Getopts默認大小寫bash腳本

[英]Getopts default case bash script

我想使用getopts,但是默認情況下不起作用。

我嘗試的代碼是:

while getopts "sdp" arg; do
case "$arg" in
s) 
    echo "1" 
;;
p)
    echo "2" 
;;
d) 
   echo "3" 
;;
*) 
   echo "default"
;;
esac

當我運行該過程時:./myTask

我沒有收到任何輸出

它按預期工作。

默認情況不是處理沒有參數的情況,而是提供無效參數的情況:

$ ./myTest -X
./myTest: illegal option -- X
default

通常,在這種情況下,您將編寫使用情況消息。

這是case語句的默認值,但這意味着在getopts上下文中特定的東西:您定義了一個選項,但沒有子句可以處理它。

例如,如果運行./myTask -z ,您將在此處的另一個答案中看到@that_other_guy聲明的“默認”輸出。

如果要輸出指示未提供任何選項的內容:

然后在while getopts塊之后但在shift $(($OPTIND - 1))行之前,執行此操作(對if塊進行所需的任何處理:

if ((OPTIND == 1))
then
    echo "No options specified"
fi

請注意,這並不表示未指定任何參數 (例如,如您問題中的./myTask )。 要執行此操作,請shift之后添加以下內容:

if (($# == 0))
then
    echo "No positional arguments specified"
fi

請在我的答案中查看 getopts函數的參考實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM