Я пытаюсь использовать getopts следующим образом:
#!/bin/bash
while getopts "i" option
do
case "${option}"
in
i) INT=${OPTARG};;
esac
done
echo "$INT"
Но он печатает $INT, только если я использую getopts "i:"
. Если я правильно понимаю, двоеточия в optstring означают, что для соответствующих флагов требуются значения. Но я хочу сделать этот флаг необязательным. Может ли кто-нибудь объяснить, почему скрипт ведет себя так и как я могу это исправить?
getopts
не поддерживает необязательное аргументы. Для этого вам понадобится GNUgetopt
(с большим количеством различной семантики). - person Jonathan Leffler   schedule 26.08.2017getopts
в сценарии оболочки Bash, чтобы получить длинные и короткие параметры командной строки. Это не прямой дубликат, но содержит полезную информацию. - person Jonathan Leffler   schedule 26.08.2017getopt
доступна по адресу frodo.looijaard.name/project/getopt. - person Jonathan Leffler   schedule 26.08.2017