【发布时间】:2011-06-12 15:41:39
【问题描述】:
我有一个变量 x=7,我想回显它加一,例如 echo ($x+1),但我得到了:
bash:语法错误接近意外 令牌`$x+1'
我该怎么做?
【问题讨论】:
我有一个变量 x=7,我想回显它加一,例如 echo ($x+1),但我得到了:
bash:语法错误接近意外 令牌`$x+1'
我该怎么做?
【问题讨论】:
【讨论】:
试试双括号:
$ x=7; echo $(($x + 1))
8
【讨论】:
您也可以使用bc 实用程序:
$ x=3;
$ echo "$x+5.5" | bc
8.5
【讨论】:
试试 回声 $(($x + 1))
我认为这只适用于 3 或更多版本的 bash..
echo `expr $x + 1`
将是另一种解决方案
【讨论】:
$(( )) 实际上是 POSIX 兼容的,而不是 bash 主义。
$ echo $(($x+1))
8
来自man bash:
算术展开
算术扩展允许对算术进行评估 表达式和结果的替换。格式 算术扩展是:
$((expression))表达式被视为在 double 内 引号,但括号内的双引号不是 特殊对待。表达式中的所有标记都经过 参数扩展,字符串扩展,命令替换, 和报价删除。算术替换可以嵌套。
根据列出的规则执行评估 下面在算术评估下。如果表达式是 无效,bash 打印一条消息,指示失败并且没有 发生替换。
【讨论】:
(( )) 内为变量添加$ 前缀
只需使用expr 命令:
$ expr $x + 1
8
【讨论】:
我们为此使用expr:
echo `expr $x + 1`
【讨论】:
试试这个方法:
echo $(( $X + 1 ))
【讨论】:
echo $((x+1)) 也与 echo $(($x+1)) 结果相同
【讨论】: