Возможный дубликат:
Использование getopts в сценарии оболочки bash для получения длинных и коротких параметров командной строки
Я пытаюсь понять, как использовать, например, флаг -e / - email -h / - help.
ОБНОВЛЕНИЕ: Текущий пример:
while getopts ":ec:h" OptionArgument; do
case $OptionArgument in
e ) S1=${OPTARG};;
c ) S2=${OPTARG};;
h ) usage;;
\?) usage;;
* ) usage;;
esac
done
Однако, если я оставлю поле пустым, он ничего не сделает. Если я добавлю -h, он все равно будет работать и не будет показывать использование.
ОБНОВЛЕНИЕ2
while [ $1 ]; do
case $1 in
'-h' | '--help' | '?' )
usage
exit
;;
'--conf' | '-c' )
;;
'--email' | '-e' )
EMAIL=$1
;;
* )
usage
exit
;;
esac
shift
done
-h / - справка работает, но все остальное не работает и отображает использование.
getopts
Bash не поддерживает длинные аргументы, только однобуквенные. См. этот ответ, чтобыgetopt
GNU делал то, что вы хотите. - person Telemachus   schedule 09.10.2012shift
для--email
дела иEMAIL=$2
- person glenn jackman   schedule 09.10.2012