2014-02-10 149 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