Unixテストでは、テストコマンドでeq vs = vs ==をいつ使用する必要がありますか?

Unixテストでは、テストコマンドでeq vs = vs ==をいつ使用する必要がありますか?

-eqいつvs =vsを使用する必要がありますか?==

例えば

[[ $num -eq 0 ]]

[[ $num = 'zzz' ]]

-eq-ne数字と文字列を表すために(andなど)を使用するパターンを観察しました=。これには理由がありますか?いつ使うべきですか?==

ベストアンサー1

これがオペランドの定義だからです。 ~からPOSIXテスト文書、OPERANDSセクション:

s1 = s2

文字列 s1 と s2 が等しい場合は真、そうでなければ偽です。

...

n1-eq n2

整数 n1 と n2 が代数的に等しい場合は真、そうでなければ偽です。

==bashPOSIXで定義されたものではなく、から派生した拡張ですksh==移植性を望むときは使用しないでください。 ~からbash ドキュメント - Bash 条件式:

文字列1 ==文字列2

文字列1 = 文字列2

文字列が等しい場合は真です。POSIX 準拠を保証するには、テストコマンドで '=' を使用する必要があります。

おすすめ記事