Я хочу проанализировать некоторые аргументы сценария 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=$@