Bash getopts сбрасывает последний аргумент - PullRequest
1 голос
/ 06 марта 2012

Итак, я пытаюсь использовать встроенные в 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

Кто-нибудь знает, что может быть причиной этого?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

Кажется, вы ожидаете, что -g будет иметь аргумент, но в вашем объявлении опций нет ":", связанного с вашим -g.

Вы должны иметь это:

h:o:g:
3 голосов
/ 06 марта 2012

В строке параметров отсутствует : после g.

...