[英]getopts in bash programming
當我使用'while getopts d:n:OPTION'時-我怎么知道我只有無效的選項,如果是,那后面還有一個參數?
您知道您的選項無效,因為返回值為'?'。
或者:
要么:
“或”選項中的啟發式方法是不完善的。 通過選項捆綁,我可以寫:
command -xbf/fidget
'xf:'
,則'b'為無效選項。 'xbf:'
,則有效選項'b'之后將有一個選項'f'和選項參數'/ fidget'。 'xb:f:
',則'b'的選項參數將是'f / fidget'。 我認為“任何一種”態度都是正確的-您無法分辨。
來自名為“ rcsunco”的命令的代碼片段-取消RCS檢出(並在我勉強離開SCCS時編寫):
remove=yes
keep=no
get=no
quiet=
while getopts gknqrV opt
do
case $opt in
V) echo "`basename $0 .sh`: RCSUNCO Version $Revision: 2.1 $ ($Date: 2002/08/03 07:41:00 $)" |
rcsmunger
exit 0;;
g) get=yes;;
k) keep=yes;;
n) remove=no;;
q) quiet=-q;;
r) remove=yes;;
*) echo "Usage: `basename $0 .sh` [-{n|g}][-{r|k}] file [...]" 1>&2
exit 1;;
esac
done
shift $(($OPTIND-1))
這些天來,我在“案例”中使用了“平衡括號”表示法:
(q) quiet=-q;;
還要注意,我沒有明確測試返回哪個選項-我讓所有的'*'案例都處理了。 我還觀察到用法消息不完整(沒有記錄“ -V”或“ -q”),並且代碼足夠老,以至於我沒有添加“ -h”作為幫助選項。 腳本“ rcsmunger”僅將“ $Revision 2.1 $
”替換$Revision 2.1 $
“ 2.1
”,更像SCCS用“ 2.1”替換“%I%”的方式。
無效的選項將帶有問號?...如果有問號,則對命令行參數的IIRC處理將停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.