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