Назад | Перейти на главную страницу

Как я могу получить оставшиеся аргументы после извлечения проанализированных элементов с помощью getopts?

Я хочу проанализировать некоторые аргументы сценария bash с помощью getopts, но хочу иметь доступ к остальным аргументам, которые не включены в список параметров. Так, например, если мне позвонят:

% script -a -b param -c param -d other arguments here

Я бы:

while getopts "ab:c:d" opt ; do
.
done

Как проще всего получить «здесь другие аргументы», которые не должны обрабатываться getopts?

вам нужно сдвинуть, когда вы разбираете аргумент, или помещаете

shift $ ((OPTIND -1)) после завершения синтаксического анализа, затем действуйте обычным образом, например.

while getopts "ab:c:d" opt ; do
.
done
shift $(expr $OPTIND - 1 )

while test $# -gt 0; do
  echo $1
  shift
done

В конце синтаксического анализа после сдвига переменная $ @ содержит конец строки:

while getopts "ab:c:d" opt ; do
.
done
shift $((OPTIND-1))
OTHERARGS=$@