1

算術比較でこの問題に遭遇したとき、シェルスクリプトを学び、tutorialspoint のチュートリアルに従っています。

$VAL1=10
$VAL2=20
$VAL3=10

if [ $VAL1 == $VAL2 ]
then
    echo "equal"
else
    echo "not equal"
fi

しかし[: ==: unexpected operator、比較演算子が機能しなかった理由がわかりません。有理演算子も使用できることはわかっていますが、「==」が定義されていない理由を知りたいです。

4

1 に答える 1

11

次のように変更します。

VAL1=10
VAL2=20
VAL3=10

if [ "$VAL1" -eq "$VAL2" ]
then
    echo "equal"
else
    echo "not equal"
fi

説明:

  • $割り当てに左辺値 (割り当てられる変数) を追加しないでください。
  • テストでは常に変数を二重引用符で囲みます。あなたが得た[: ==: unexpected operatorエラーは、VAL1/VAL2が以前に適切に割り当てられていなかったため、テストの ksh 展開が実際にこれに解決されるためです: - (ただし、未定義でif [ == ]あることは実際には問題ではないことがわかります)==
  • ==数値の比較には、表記 の代わりに次を使用します。
    • -eq(==)
    • -ne(!=)
    • -gt(>)
    • -ge(>=)
    • -lt(<)
    • -le(<=)
于 2012-12-03T00:21:27.177 に答える