以下是我尝试过的代码 -
nisarg@nisarg-ThinkPad-T61:~$ export a=1
nisarg@nisarg-ThinkPad-T61:~$ export b=2
nisarg@nisarg-ThinkPad-T61:~$ echo $a
1
nisarg@nisarg-ThinkPad-T61:~$ echo $b
2
nisarg@nisarg-ThinkPad-T61:~$ echo 'expr $a + $b'
expr $a + $b
我甚至确保+
周围有空格,因为它们是大多数错误的原因。
为什么这不起作用?
答案 0 :(得分:4)
单引号会阻止$a
和$b
展开,以及expr
被调用;你可能会混淆使用反引号的单引号,这是命令替换的旧语法。使用双引号和$( ... )
:
echo "$(expr $a + $b)"
以上代码相当于
expr $a + $b
因此,如果需要捕获输出以分配给变量或将结果嵌入到更长的字符串中,则只需要命令替换。此外,expr
对于POSIX兼容的shell(即几乎任何可能使用的shell)都不需要算术运算。您可以使用算术表达式$(( ... ))
代替。
echo "$(( $a + $b ))"
答案 1 :(得分:0)
x=9
y=7
z=`expr $x + $y`
echo $z
用空格写上表达式,并用反引号(``)括起来。