この単純な算術演算を実行して、bash シェルの変数に格納できないのはなぜですか? 私はこれに苦労し()
、$
シンボルをいじっていましたが、運がありませんでした。
read t
let r=$(5/9)*$($t-32)
私は得るa: let: r=*: syntax error: operand expected (error token is "*")
この単純な算術演算を実行して、bash シェルの変数に格納できないのはなぜですか? 私はこれに苦労し()
、$
シンボルをいじっていましたが、運がありませんでした。
read t
let r=$(5/9)*$($t-32)
私は得るa: let: r=*: syntax error: operand expected (error token is "*")
letステートメントを使用している場合、ドル記号は必要ありませんが、代わりに式をシングル クォーテーションで囲んで、シェル プリプロセッサが演算子を混乱させないようにします。bash は整数以外の数値を処理できないように見えるため、(5/9) 式は常にゼロになることに注意してください。2 番目の 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"
それを試してください:
read -p 'Type integer temp (Fahrenheit) >>> ' int
echo "$(( 5 * ( int - 32 ) / 9 )) Celcius"