Но это не то, что он просит, чтобы соответствовать. Проблема не имеет ничего общего case
и все до getopt
и set
до нее.
Даже если ваш блок case все еще проверяет то же самое $1
, он больше не получает от вас только параметр командной строки. Предыдущая set
команда заменила исходные параметры выводом из программы getopt, которая обычно выглядит так -- "g"
.
Этот дополнительный --
параметр вставляется getopt, чтобы указать, что опции останавливаются в этой точке, и начинаются неопционные аргументы. В этом и заключается вся цель getopt - сортировать и разделять различные типы аргументов командной строки.
Если вы добавите эту строку, это должно стать очевидным:
while true; do + echo "arg 1 is '$1'" case "$1" in