2017-06-22 72 views
1

我是Unix新手。我嘗試添加值如下所述:如何在UNIX中添加值?

var='expr 2 + 2' 
echo "Total value: $var" 

我希望輸出是Total value: 4。相反,我得到Total value: expr 2 + 2

任何人都可以幫助我找出我的錯誤嗎?

回答

3

簡單的方法:

var=$((2 + 2)) 

或者bc(計算機語言)的方式來進行數學計算:

var=$(echo '2 + 2' | bc) 
echo "Total value: $var" 
Total value: 4 
+0

貌似矯枉過正,我 - 'expr'就好了。重要的是命令替換,使用'''command''或'$(command)' –

+1

@TobySpeight,'var = $((2 + 2))'更好(可移植性)。 'bc'適合擴展數學計算 – RomanPerekhrest

+0

如果使用十進制(非整數)數字,請記住使用'bc -l'。 –

1
var=$(expr "2" + "2") 
echo "Total value: $var" 
3

你需要知道一個殼概念:當你寫var='expr 2 + 2',這是一個字符串。但是你想要得到這個命令的結果。 爲此,您需要編寫$(expr 2 + 2)來執行該命令,並替換其輸出。

這裏有一個工作更換:

var=$(expr 2 + 2) 
echo "Total value: $var" 

歡迎Unix世界! ;)

-1

另一種方式:

var=$((2 + 2)) 
echo "Total value: $var" 

(編輯:沒有稱這是一個bashism)

+1

bashism?真? –

+0

算術擴展('$((...))')符合POSIX。 – mklement0

+0

謝謝,我相應地更新了答案,不再稱它爲抨擊。 –