2017-01-19 46 views
0
#!/bin/bash 
x=10 
echo x=$x 
z=20 
echo z=$z 
y= expr $x + $z 
echo y=$y 

我希望輸出這樣的:算術表達式的Bash腳本

x=10 
z=20 
y=30 

,但它給錯誤,如:

x=10 
z=20 
30 
y= 
+1

'Y = $(表達式$ X + $ Z)',而不是'Y = EXPR $ X + $ z' –

+1

'Y = \'$ expr的X + $ Z^\''也工作,尋找對於「bash中的命令替換」,是更好的Inian的解決方法 –

回答

5

NOT使用過時的結構expr,用算術運算符$(())POSIX兼容算術bash

y=$((x + z)) 
echo "y=$y" 
+0

ohh ...謝謝..現在的工作 –

+2

'$((...))'不僅僅是標準的,而是它在當前進程中執行算術,而不是開始一個新的進程來運行'expr'。 – chepner

+1

此外,如果您先將x,y和z聲明爲整數,則可以用'((y = x + z))'或簡單地'y = x + z'替換'y = $((x + z))'與'聲明-ixyz' –