Ваши две ошибки вызваны:
until [$MY_VAR = 0]
MY_VAR = $(expr $MY_VAR - 1)
[Я использовал $ () вместоbackticks, потому что я не мог получить backticks в раздел кода]
Первая проблема - это отсутствие пробелов вокруг квадратных скобок - на обоих концах.Оболочка ищет команду [6
(после расширения $MY_VAR
) вместо [
(посмотрите на /usr/bin/[
- это на самом деле программа).Вы также должны использовать -eq
для сравнения чисел.=
здесь должно работать нормально, но начальные нули могут нарушить сравнение строк, где будет работать числовое сравнение:
until [ "$MY_VAR" -eq 0 ]
Вторая проблема заключается в наличии пробелов в присваивании переменной.Когда вы пишете MY_VAR = ...
, оболочка ищет команду MY_VAR
.Вместо этого запишите его как:
MY_VAR=`expr $MY_VAR - 1`
Эти ответы прямо отвечают на ваши вопросы, но вы должны изучить ответ Денниса Уильямсона, чтобы найти лучшие способы сделать это.