bash [[ = ]] アクション

bash [[ = ]] アクション

man bash:

[[式]]
[...]式は、条件式の下で説明されている主な要素で構成されています。 [[と]]の間の単語には単語分割とパス名拡張は適用されません。
[...] == と != 演算子を使用する場合、演算子の右側の文字列はパターンと見なされ、次のように一致します。パターン説明した規則を一致させます。

完全なセクションでは、=単一の状況について言及していません。

条件式
[...]
string1 == string2
string1 = string2は、文字
列が等しい場合は真です。 =はPOSIX準拠を保証するためにテストコマンドと一緒に使用する必要があります。

この説明では私は予想しました

[[ a = $cmpstring ]]

文字列の合計が同じであることを確認してください。

[[ a == $cmpstring ]]

パターンの一致を確認してください。しかしそれは真実ではない:

> [[ a == ? ]]; echo $?
0
> [[ a = ? ]]; echo $?
0
> [[ a == "?" ]]; echo $?
1

私が何かを間違って理解したのか、それともbashのマニュアルページで言及するのを忘れてしまったのでしょうか=

ベストアンサー1

===中にいる時も同じだ[[...]]。最新のmanページによると、SHELL GRAMMAR>>Compound Commands下にあります[[ expression ]]

The = operator is equivalent to ==

より下CONDITIONAL EXPRESSIONS

string1 == string2
string1 = string2
        True  if  the  strings  are equal.  = should be used with the test command
        for POSIX conformance. When used with the [[ command, this performs pattern
        matching as described above (Compound Commands).

bash infoページ:

ここに画像の説明を入力してください。

おすすめ記事