Цикл while в скрипте оболочки выдает ошибку: слишком много аргументов

Я пытаюсь запустить очень простой сценарий, который читает ввод от пользователя и постоянно цикл. Но они показывают ошибку [: слишком много аргументов

i=0
while [ $i -le 5 ]
do
echo $i
i='expr $i + 1'
done

2 ответа

Заменить '' на Острый (`). Я проверил это работает отлично

i=0
while [ $i -le 5 ]
do
echo $i
i=`expr $i + 1`
done

Ошибка в том, что вы используете одинарные кавычки вместо обратных кавычек для подстановки команды. Другими словами, это должно быть i=`expr $i + 1` скорее, чем i='expr $i + 1',

Кроме того, @Pankrates указывает, что это может быть более читабельным, чтобы использовать эквивалентное выражение i=$(expr $i + 1), Если бы автор любого материала, который вы читали, использовал эту форму, можно с уверенностью сказать, что, по крайней мере, ваших проблем удалось избежать.

Другие вопросы по тегам