Вызов удара getopts от функции перестал работать в 2-й раз

[115859] В команде [116197][[116198] встроены сравнительные тесты, поэтому можно просто сделать

, где [116199]-ge[116200] означает greater-or-equal-to (и так далее). Команда [116201]-a[116202] является логическим "и". Команда [116203][[116204] - это просто команда, а не специальный синтаксис (на самом деле это то же самое, что и [116205]-тест[116206]: проверьте [116207]-мужской тест[116208]), поэтому пробел за ней НЕ ОТМЕНЯЕТСЯ. Если вы напишете [116209][$REPLY[116210], он попытается найти команду с именем [116211][$REPLY[116212] и выполнить ее, что не сработает. То же самое можно сказать и о закрытии [116213]][116214].

Правка: чтобы проверить, целое ли число (если это может произойти в вашем коде), сначала выполните тест

Конечно, все эти выражения в скобках возвращают 0 (истина) или 1 (ложь) и могут быть объединены. Можно не только заключить все в одну скобку, но и сделать

или что-то подобное.[115868].

2
02.02.2015, 01:11
1 ответ

Ответ заключается в том, что ГУМКТЫ сохраняет указатель в $ Optind и, следовательно, привлечение к добавлению локальный Optind или OPTIND = 1 к началу функции GetOPT_TEST .

Благодаря @sivann для предоставления ссылки.

2
27.01.2020, 22:12

Теги

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