私のexprは印刷されていますが、評価されません。

私のexprは印刷されていますが、評価されません。

このスクリプトのコードは次のとおりです。

echo "Years:"
read age
x=`expr $age*365`
echo -e $x

コマンドラインからこのスクリプトを呼び出すときの出力は次のとおりです。

Years: 

(20個入れたと仮定)

20*365

評価してみてはいかがでしょうか?

ベストアンサー1

exprそれは廃止され、現在はほとんど使用されていません。さらに、次のようなより良い選択肢と比較して、使用することは非常に限られており、薄くなります。

  1. バッシュ整数のみこれで算術が組み込まれました。

    $ age=20
    $ echo "$((age * 365))"
    7300
    
    $ x=$((age*365))
    $ echo "$x"
    7300
    
  2. bc浮動小数点演算の場合:

    $ age=20
    $ echo "$age * 365.25" | bc
    7305.00
    

    または、小数部を削除するには:

    $ echo "scale=0; $age * 365.25/1" | bc
    7305
    

    scale加算、減算、乗算の設定は無視されるため、1で割る必要がありますbc。これは「固定」される可能性がない長年の痛みを伴う問題です。

  3. RPNを好む場合は、次のものを使用できますdc

    $ age=20
    $ dc -e "$age 365.25 * p" 
    7305.00
    

注:バックティックは廃止され、廃止されました。代わりにバックティックを使用してください$(...)。例えば

x=$(echo "$age * 365.25" | bc)

x=$(dc -e "$age 365.25 * p")

おすすめ記事