Попробуйте изменить все +1
после expr
на + 1
.
Без пробела expr
вернет ошибку, а $temp
будет пустым. Если $temp
пусто, то -lt
будет сравнивать пробел с числом, поэтому и появляется ошибка. Вот один лайнер, который воспроизводит проблему:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Вывод (в STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Еще лучше, измените весь код, который использует внешнюю утилиту expr
, чтобы использовать собственное внутреннее арифметическое расширение оболочки. Вот такой код:
temp=`expr $temp +1`
...следует изменить на:
temp=$(($temp + 1))
Или, в bash
, всю строку можно заменить только:
((temp++))