Цикл 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)
, Если бы автор любого материала, который вы читали, использовал эту форму, можно с уверенностью сказать, что, по крайней мере, ваших проблем удалось избежать.