Linux
bash 腳本添加參數
我創建了一個帶有參數和參數的腳本。我想插入
--help
論點。我已經知道如何用 解析普通參數
-
,但我不知道如何解析--
那些。要解析 的選項
test.sh -h
,我使用以下檢查:while getopts ":h" opt; do case $opt in h ) { echo "help!!!" exit 1 } ;; esac done
但我希望可以選擇使用
test.sh --help
.PS 我使用的是 Ubuntu 12.04……但這並不重要。
getopts
無法處理長參數:$ ( set -- --help ; while getopts -- -help opt; do echo "$opt"; done ) - h e l p
如果要處理長參數,則需要編寫自己的解析器。
GNU 版本
getopt
確實支持解析長選項,但最好不要使用它;它不是可移植的,非 GNU 版本傾向於打破某些類型的論點。例如,它們通常無法正確解析帶有空格的參數。
問題的作者提供了這個解決方案:
我在 /usr/bin 的一個 .sh 腳本中找到了解決方案
if test $# = 1; then case "$1" in --help | --hel | --he | --h ) func_usage; exit 0 ;; --version | --versio | --versi | --vers | --ver | --ve | --v ) func_version; exit 0 ;; esac fi
Chris Down 對此的評論:
就像我說的,如果你想處理長參數,你需要編寫自己的解析器——腳本
$$ that you found $$就是一個例子。 作為記錄,您發現的腳本寫得不好。例如,
--version
部分匹配可以重寫為--v*
)(假設你對 沒問題--vfoo
)。