Итак, я пытаюсь использовать использование встроенных getopts в bash для обработки обработки аргументов, за исключением того, что получаю странный результат. Вот мой тестовый скрипт;Bash getopts, удаляющий последний аргумент
#!/bin/sh
HOST=
OWNER=
GROUP=
while getopts "h:o:g" OPTION;
do
case $OPTION in
h)
HOST=$OPTARG
;;
o)
OWNER=$OPTARG
;;
g)
GROUP=$OPTARG
;;
esac
done
echo "$HOST - $OWNER:$GROUP"
Однако, когда я запускаю скрипт, используя это;
./test.sh -h test.host.com -o skittles -g whatever
Мой последний аргумент никогда не втягивается и не падает. Мой результат от эха;
test.host.com - skittles:
^where's my group value? O.o
Кто-нибудь знает, что вызвало бы это?
Спасибо.
Спасибо, Оуки! Я не знал, что двоеточие должно преуспеть в каждом варианте. Причина, по которой я пропустил это, был из-за этого примера, который я использовал, чтобы попробовать. http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/ – Skittles
Это довольно эксплицитно сказано на странице [bash getopt man] (http://ss64.com/bash /getopts.html): «Если за символом следует двоеточие, ожидается, что параметр имеет аргумент». – Ouki