У меня есть переменная x=7
, и я хочу повторить это плюс один, как echo ($x+1)
, но я получаю:Как эхо-сумма суммы переменной и числа?
Баш: ошибка синтаксиса около неожиданной лексемы ` $ х + 1'
Как я могу это сделать?
У меня есть переменная x=7
, и я хочу повторить это плюс один, как echo ($x+1)
, но я получаю:Как эхо-сумма суммы переменной и числа?
Баш: ошибка синтаксиса около неожиданной лексемы ` $ х + 1'
Как я могу это сделать?
Нет необходимости в expr
, POSIX оболочка не позволяет $(())
для арифметической оценки:
echo $((x+1))
Смотреть §2.6.4
попробовать эхо $ (($ х + 1))
Я думаю, что работает только на некоторой версии Баш, что 3 или более ..
echo `expr $x + 1`
будет другое решение
Просто используйте expr
команду:
$ expr $x + 1
8
Мы используем expr
для этого:
echo `expr $x + 1`
Попробуйте так:
echo $(($X + 1))
Try двойной круглые скобки:
$ x=7; echo $(($x + 1))
8
$ echo $(($x+1))
8
От man bash
:
Арифметических расширения
Арифметического расширения позволяет оценить выражение арифметического и замену результата. Формат для расширения арифметика:
$((expression))
Выражение рассматривается как если бы оно было заключено в двойные кавычки , но двойные кавычки внутри скобок не обработаны специально. Все токены в выражении подвергаются расширению параметра, расширению строки, замене команд, и удалению цитат. Арифметические подстановки могут быть вложенными.
Оценка проводится согласно приведенным ниже правилам ниже под АРИМЕТИЧЕСКОЙ ОЦЕНКОЙ. Если выражение недействительно, bash печатает сообщение об ошибке и не имеет замены .
Не нужно префикс vars с '$' inside '(())' – SiegeX
Вы также можете использовать утилиту bc
:
$ x=3;
$ echo "$x+5.5" | bc
8.5
+1 для bc !!!!! –
Как уже упоминалось в моем ответе, '$ (())' на самом деле POSIX совместимые, не bash'ism. – SiegeX