2014-02-10 109 views

回答

3

单引号阻止$a$b被扩展,以及expr被阻止;您可能会将单引号与backquotes混淆,后者是命令替换的较早语法。使用双引号和$(...)

echo "$(expr $a + $b)" 

上面的代码等同于

expr $a + $b 

,所以你只需要在命令替换,如果你需要捕获输出分配给一个变量或嵌入结果在一个更长的字符串。另外,在兼容POSIX的shell(即几乎所有可能使用的shell)中,算术不需要expr。您可以改用算术表达式$((...))

echo "$(($a + $b))" 
+0

或'echo $((a + b))'也 – anubhava

+0

正确;在算术表达式中,任何字符串文字都被假定为要展开的变量,所以美元符号对于简单参数展开是可选的。 – chepner