Я знаю, как обращаться необязательные аргументы с помощью getopts в BashКак разрешить необязательные аргументы перед необязательными аргументами, используя getopts в Bash?
#!/bin/bash
while getopts ":a:p:drh" opt; do
case "$opt" in
a) echo $OPTARG;;
esac
done
Но если мой сценарий ожидает ./script.sh arg1 [options]
, как я могу сказать getopts
пропустить arg1?
$ ./script.sh -a 1234
1234
$ ./script.sh arg1 -a 1234
$ ./script.sh arg1
$ ./script.sh -a 1234 arg1
1234
Как я вижу, я могу обработать аргумент, если аргумент помещается в последнюю позицию. Какое «регулярное выражение» мне нужно в getopts
, чтобы мой позиционный аргумент находился перед дополнительным аргументом?
Предложения от How to allow non-option arguments in any order to getopt?, похоже, переупорядочивают аргументы.
Спасибо. Это, наверное, единственный лучший, самый дешевый обходной путь! – CppLearner