Linuxシェルプログラミングで文字列を比較するための=
と==
の違いは何ですか?
たぶん、次のコードは動作します:
if [ "$NAME" = "user" ]
then
echo "your name is user"
fi
しかし、それは正しい構文ではないと思います。 ==
ステートメントによって文字列を比較するために使用されます。
何が正しいですか?
これらのページでは、bashのさまざまな比較演算子について説明しています。
リンクされている2番目のページには、次のものがあります。
==
is equal to
if [ "$a" == "$b" ]
This is a synonym for =.
単一の等号は正しい
string1 == string2
string1 = string2
文字列が等しい場合は真。 POSIX準拠のテストコマンドでは「=」を使用する必要があります
NAME="rafael"
USER="rafael"
if [ "$NAME" = "$USER" ]; then
echo "Hello"
fi
一般に、=演算子は、文字列を比較するときに==と同じように機能します。
注:==比較演算子の動作は、二重括弧テスト内と単一括弧内では異なります。
[[ $a == z* ]] # True if $a starts with an "z" (pattern matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
[ $a == z* ] # File globbing and Word splitting take place.
[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).