За инструкцией while
следует команда, с помощью которой оценивается код возврата, чтобы определить, следует ли выполнять цикл или нет. Он продолжается, если возвращаемое значение равно 0
.
Обращение к неинициализированной переменной идентично ее инициализации с помощью "".
Поскольку запуск пустой команды не вызывает ошибки, он возвращает соответствующий код возврата ( 0
):
$ foo=''
$ $foo
$ echo $?
0
Это нормальное поведение, поскольку в противном случае оболочка выдает ошибку каждый раз, когда вы нажимаете Enter без ввода что-нибудь.
Обратите внимание, что это отличается от указания пустой строки, которую оболочка определяет как проблему:
$ ''
-bash: : command not found
$ echo $?
127