Я использую getopt
(не getops
), чтобы предоставить моему сценарию bash возможность обрабатывать параметры и переключатели (как длинные --option, так и короткие -o формы).
I 'Я хотел бы иметь возможность отлавливать недопустимые параметры и обрабатывать их, как правило, повторяя, что пользователь должен попробовать cmd --help
, а затем выйти из сценария.
Дело в том, что недопустимые параметры перехватываются getopt, которыйСам вывод сообщения, такого как "getopt: invalid option - 'x'"
Вот шаблон, который я использую для установки моих параметров getopt:
set -- $(getopt -o $SHORT_OPTIONS -l $LONG_OPTIONS -- "$@")
, где $ 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
заявление по-прежнему не в состоянии сделать то, что я ожидаю.Вместо этого программа просто выполняется, несмотря на неверные аргументы.