В настоящее время я разбираю параметры в таком скрипте:
while getopts ":ia" OptionArgument; do
case $OptionArgument in
i ) echo "bli";;
a ) echo "bla";;
* ) echo "flag not known";;
? ) echo "unknown parameter";;
esac
done
Все опции парсинга и флаги работают, кроме этого: ? )
. Поэтому, если я вызываю свой скрипт с чем-то вроде ./MyScript hjrfgdskjgh
, он правильно проходит цикл, хотя он должен быть пойман в последней строке с ? )
.
Я также пробовал удалять кавычки из ":ia"
или использовать \?
или . )
- ничего не работает! Что я делаю не так??
* ) echo "flag not known";;
делает то, что сделал бы?
. Если вы прокомментируете*) ...
, вы заработаете?)
. - person fedorqui 'SO stop harming'   schedule 12.06.2013* )
анализирует только неизвестные флаги, такие как, например. -х или -у. Но он игнорирует случайные слова, такие какkajdhkjefhskef
. Если я удалю* )
или заменюit with
? )` из-за порядка - ничего не меняется. Как будто вообще не знает?
... - person Malvin   schedule 12.06.2013getopts
будет обрабатывать любой флаг, который имеет - в начале. Если вы выполните./script -t
, он покажетflag not known
, но если вы выполните./script t
, вы не предоставите информациюgetopts
. - person fedorqui 'SO stop harming'   schedule 12.06.2013-
, он вообще его не получает. Я думал, что getopts справится и с этим, но в этом случае я должен проверить это вручную. Большое спасибо, если вы добавите это как ответ, я отмечу это как правильный ответ. - person Malvin   schedule 12.06.2013