Как я могу использовать "getopts" без параметра? (здесь для "-v")

223
m1well

Как я могу использовать getoptsбез параметра?

while getopts ":a:f:l:r:h:v:" arg; do printf $arg case $arg in a) add_param=$ ;; f) file_param=$ ;; l) list_param=$ ;; r) remove_param=$ ;; v) version_param="version" printf "hello world" ;; h | *) print_usage exit_script esac done 

Я никогда не получаю в случае, -vесли я запускаю свой сценарий, как это, sh script.sh -vпотому что эта реализация ожидает параметр.

Можете ли вы помочь мне исправить это?

0

1 ответ на вопрос

1
Kamil Maciorowski

От help getoptsbash):

getopts: getopts optstring name [arg] Parse option arguments.  Getopts is used by shell procedures to parse positional parameters as options.  OPTSTRING contains the option letters to be recognized; if a letter is followed by a colon, the option is expected to have an argument, which should be separated from it by white space. 

Я думаю, что это справедливо и для sh. Вы должны попробовать ":a:f:l:r:hv"вместо ":a:f:l:r:h:v:".

Похожие вопросы