Я хочу получить доступ к нескольким входам командной строки для флагов, но не могу заставить его работать. Порядок ввода вне моего контроля, с форматом (# являются числами, а не комментариями)
./program.sh -a -b # #
./program.sh -b # # -a
./program.sh -b # #
-a
не имеет опций, это просто включение / выключение
-b
всегда сопровождается двумя числами.
Я пытался использовать getopts
, и это работает для -a
и первого числа -b
, но я не могу получить доступ ко второму номеру. Поскольку иногда -a
следует после -b
, обработка «остатка» ввода как строки не работает должным образом.
Я попытался использовать цикл, который, когда он нашел -b
, посмотрел на следующие два значения для установки, показанные ниже:
for i in "$@"; do
case "$i" in
-a)
upperCase=true;
;;
-b)
first=$(($i+1));
second=$(($i+2));
;;
*)
;;
esac
done
выходные данные должны быть напечатаны буквами от # до # в обоих направлениях, но у меня это работает, моя единственная проблема - получение ввода.