expr命令在shell中不起作用

时间:2014-02-10 17:22:38

标签: shell

以下是我尝试过的代码 -

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

我甚至确保+周围有空格,因为它们是大多数错误的原因。

为什么这不起作用?

2 个答案:

答案 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

用空格写上表达式,并用反引号(``)括起来。