Я неопытен с bash сценариями оболочки и столкнулся с проблемой с bash optarg
Вот небольшой сценарий для воспроизведения проблемы:
#!/bin/sh
while getopts ":a:b:" opt; do
case ${opt} in
a ) echo "a=$OPTARG"
;;
b ) echo "b=$OPTARG"
;;
\? ) echo "Invalid option: $OPTARG" 1>&2
;;
: ) echo "Invalid option: $OPTARG requires an argument" 1>&2
esac
done
Когда я пытаюсь это сделать:
./args.sh -a av -b bv
я получаю ожидаемый результат:
a=av
b=bv
Но когда я опускаю аргумент для -a:
/args.sh -a -b bv
, я получаю этот неудачный результат:
a=-b
Когда я ожидал, что ошибка покажет, что значение -a отсутствует.
Кажется, он принял аргумент -b в качестве значения для - а. Я сделал что-то не так и как мне добиться ожидаемого поведения?