2012-10-11 99 views
1

爲什麼我不能做這個簡單的算術運算並將其存儲在bash shell中的變量中?我一直在努力,並與()$符號玩,但沒有運氣。「簡單」算術

read t 
let r=$(5/9)*$($t-32) 

我得到a: let: r=*: syntax error: operand expected (error token is "*")

回答

4

當您使用聲明,你不需要美元符號,但單引號的表達而是爲了讓shell預處理器免於與運營商混淆。請注意,bash似乎無法處理不是整數的數字,因此(5/9)表達式將始終爲零。試試第二個let語句。

read -p 'Temp in Fahrenheit (no decimals): ' t 

# let r='(5/9)*(t-32)' -- this doesn't work 
let r='5*(t-32)/9' 

echo "Centigrade: $r" 
+0

它不起作用,因爲bash只執行整數運算,而5/9則計算爲0 - 在除法之前先進行乘法運算。 –

2

試一下:

read -p 'Type integer temp (Fahrenheit) >>> ' int 
echo "$((5 * (int - 32)/9)) Celcius" 
+0

「int」是什麼意思? – bb2

+0

@ bb2它是一個變量。 – jordanm

+0

是的,在算術bash表達式中,不需要'$'。查看編輯後的http://wiki.bash-hackers.org/syntax/arith_expr –