0

if ステートメントで 2 つの 10 進数値を比較したいのですが、期待どおりに結果が得られません。$value 変数に 1 つの 10 進値があるとします。その後 if [ $value -eq 0.00 ]は動作していませ$value0.00

この点で助けてください。前もって感謝します!

4

1 に答える 1

2

float をサポートするシェルもあれば、サポートしないシェルもあります。

  • Bash は float 値をサポートしていません。
  • Zsh は float 値をサポートしています。

いずれにせよ、-eq演算子は整数間の比較を実行するために存在し、float ではありません (Zsh であっても)。

どのシェルを使用しているかはわかりませんが、2 つの解決策があります。好みの方法を選択してください: 外部依存を避けるか、実際のフロートを操作します。

float を文字列と見なす

=このようにして、文字列を演算子 (文字列等価演算子)と直接比較できます。

A=1.1
B=1.1
if [ "$A" = "$B" ] ; then
    echo 'Yeah!'
fi

bc を使用して実際の float 操作を実行する

bcシェルスクリプト式で(他のプログラムと同様に)呼び出すことができる計算機です。

A=1.1
B=1.1
if [ "$(bc <<< "$A - $B")" = 0 ] ; then
    echo 'Yeah!'
fi
于 2013-08-29T07:22:27.997 に答える