2011-07-05 56 views
3

請告訴我,是否需要使用「expr」關鍵字。在shell腳本中處理算術表達式

EG: -

echo `expr a*b` 

;當我們可以簡單地處理使用簡單的算術運算符的算術表達式。

EG: -

echo a*b 

在此先感謝。

+0

使用$(())

echo $((2*3)) 

結果呢arithmatic? –

+0

我正在使用bash shell.Is問題中提到的第一種方法不能用於評估算術表達式? – Adnan

+0

你有沒有嘗試過**? –

回答

6

第二種形式幾乎肯定不會做你想要的。在bash中,你有一個內置的數字表達式處理程序,但:

A=4; B=6; echo $((A * B)) 
13

在POSIX Shell的,你可以在shell時,他們被封閉在

$((...)) 

所以直接計算表達式:

a=12 
b=34 
echo $(($a + $b)) 

雖然這並非總是如此,所有的POSIX彈你很可能會遇到還將處理:

echo $((a + b)) 

這一切都發生是因爲很久以前,shell沒有做算術運算,所以編寫了外部程序expr。目前,expr通常是內建的(除了仍在/ bin中)並且還有Posix $((...))語法可用。如果$((...))從第一天開始就沒有,那麼將不存在expr.

shell並不完全是一種正常的計算機語言,也不完全是一個宏處理器:它是一個CLI。它不會執行內聯表達式;未加引號的*是用於文件名匹配的通配符,因爲CLI需要更頻繁地引用文件而不是執行算術運算。

2

您可以您正在使用哪個Shell在6