Я получаю сообщение об ошибке 2: [: missing ] при использовании следующего while цикла:
#!/bin/sh
while ["$INPUT_STRING" != "bye"]
do
echo "please type something (bye quits) "
read INPUT_STRING
echo "you tuped : $INPUT_STRING "
done
Я получаю сообщение об ошибке 2: [: missing ] при использовании следующего while цикла:
#!/bin/sh
while ["$INPUT_STRING" != "bye"]
do
echo "please type something (bye quits) "
read INPUT_STRING
echo "you tuped : $INPUT_STRING "
done
Вам нужно добавить пробелы вокруг условия while :
while [ "$INPUT_STRING" != "bye" ]
Это может показаться немного странным для людей с опытом программирования, но причины таковы:
while ожидает список команд. Поток управления зависит от состояния выхода этой команды: до тех пор, пока она равна нулю, тело продолжает выполняться.
[ expression ] является альтернативной формой test expression . Здесь test - это команда, которая оценивает выражение и возвращает его значение в форме состояния выхода команды. Он обязательно возвращает нулевое состояние завершения, если выражение (логически) оценивается как true логическое значение, так что его можно использовать в командах if и while .
На самом деле, и test и [ являются исполняемыми файлами в linux (обычно они находятся в /usr/bin). Однако некоторые оболочки, такие как bash , используют внутренние команды с одинаковыми именами.
Поскольку test и [ являются (технически) простыми командами, их аргументы должны быть отделены от имени команды и между собой одним или несколькими белыми символами.