我使用getopt
(不getops
)爲我的bash腳本來處理選項和開關(包括長--option和短-o形式)的能力。捕獲getopt的無效選項
我希望能夠捕獲無效的選項和處理它們,通常呼應的是,用戶應該儘量cmd --help
,然後退出腳本。
的是,無效的選項都陷入由getopt的,這本身就是輸出信息,如「getopt的:無效選項 - ‘X’」
下面是我使用的設置我的getopt的格局參數:
set -- $(getopt -o $SHORT_OPTIONS -l $LONG_OPTIONS -- "[email protected]")
其中$ LONG_OPTIONS和$ SHORT_OPTIONS都是以逗號分隔的選項列表。
這裏是我如何處理加工的選項:
while [ $# -gt 0 ]
do
case "$1" in
-h|--help)
cat <<END_HELP_OUTPUT
Help
----
Usage: ./cmd.sh
END_HELP_OUTPUT
shift;
exit
;;
--opt1)
FLAG1=true
shift
;;
--opt2)
FLAG2=true
shift
;;
--)
shift
break
;;
*)
echo "Option $1 is not a valid option."
echo "Try './cmd.sh --help for more information."
shift
exit
;;
esac
done
getopt -q
將抑制產量,但case
語句中我捕獲方案仍不能做我的期望。相反,程序只是執行,儘管無效的參數。
達到哪種情況*)? – jarno
@jarno如果你的'case'語句和'getopt'調用之間有不匹配的地方,它會被捕獲。這只是防守編程。 – l0b0