簡體   English   中英

getopt 為無法識別的選項返回 0 退出狀態

[英]getopt returns 0 exit status for unrecognized option

getopt 狀態的 Unix 手冊頁

如果在解析參數時出現問題,例如因為未找到必需的參數或無法識別選項,則會在 stderr 上報告錯誤,違規元素將不存在 output,並且非零錯誤狀態為回來。

但是,在我的 shell (GNU Bash 5.2.15) 中:

$ getopt --long foo -- --bar
 --
$ echo $?
0

換句話說,getopt 返回 0(成功),即使它被賦予了一個無法識別的選項“--bar”。 在這種情況下,getopt 不應該返回非零退出狀態嗎?

在那次調用中, getopt沒有被賦予無法識別的選項。 它沒有給出任何選項,因為作為第一個參數的--bar被解釋為 optstring,如man 1 getopt所示:

如果在第一部分中找不到-o--options選項,則第二部分的第一個參數用作短選項字符串。

之后就沒有參數了,完全合法。

我知道這似乎與getopt-o選項的描述不完全一致,但該描述在內部不一致,因為它清楚地表明 optstring可以-開頭(意味着getopt應該發出非選項參數立即,這使得解釋返回值變得更加困難)。 我相信這意味着“命令行第一部分中getopt的第一個參數”。

暫無
暫無

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

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