Я использую getopts для разбора опций для пользовательского скрипта, работающего под bash.
Код для достижения этого очень стандартный:
while getopts :s: opt; do
case $opt in
s)
echo "\$OPTARG is $OPTARG"
;;
esac
done
Однако $ OPTARG пуст дляпараметр, который я указал с числовым аргументом:
myscript.sh -s 012345 # => [ $OPTARG = "" ]
Проблема может быть решена заключением аргумента в кавычки.Хотя это уродливо для числового аргумента.
myscript.sh -s "012345" # => [ $OPTARG = "012345" ]
Есть ли более элегантное решение, чем это?
ОБНОВЛЕНИЕ
Оказывается, мойв реальном коде отсутствовал символ «:», поэтому параметр не ожидал аргумента.Я не знаю, почему строковое значение распечатало то, что ожидалось, но числовой аргумент работает теперь, я указал, что параметр принимает аргумент.