“简单”算术

时间:2012-10-11 21:48:51

标签: bash

为什么我不能执行这个简单的算术运算并将其存储在bash shell中的变量中?我一直在努力解决这个问题并使用()$符号,但没有运气。

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

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

2 个答案:

答案 0 :(得分:4)

当您使用 let 语句时,您不需要美元符号,而是单引号表达式以防止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"

答案 1 :(得分:2)

试试:

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