Bash の文字列比較演算子
この記事では、if ステートメントを使用した Bash での文字列比較について説明します。
ユーザーがさまざまなコマンドを実行するためのコマンド ライン インターフェイスを提供する Linux で実行されるシェル プログラムは、Bash シェルと呼ばれます。 これは、GNU Bourne-Again Shell (Bash) として知られる Linux の多くのディストリビューションでデフォルト シェルとしても使用されます。
バッシュスクリプト
ファイルに記述された一連の Bash コマンドは、Bash スクリプトと呼ばれます。 Bash シェルは、ファイルから読み取った後にこれらのコマンドを実行します。
Bash スクリプトのファイル拡張子は .sh です。 First.sh という名前のファイルの次の内容を以下に示します。
#!/bin/Bash
echo "Hello World"
上記のファイル First.sh は、ターミナルに Hello world を表示する echo コマンドを 1つだけ含む Bash スクリプトです。
ファイル #!/bin/Bash の最初の行は、スクリプト ファイルに記述されたコマンドを実行するインタープリターとして機能する、システム内の Bash プログラムについて通知します。
Bash シェルは、ターミナルでスクリプトを実行するためのさまざまな方法を提供します。 いくつかの方法について以下で説明します。
-
bashコマンドの後に Bash スクリプト ファイルを使用して、スクリプトを実行します。 次のコマンドは、First.shスクリプトを実行します。bash First.shこのコマンドの出力は次のとおりです。
Hello World
-
パスを指定して Bash スクリプトを実行します。
chmod +x First.shを使用してスクリプト ファイルに実行権限を割り当てた後、スクリプトのパスを指定してスクリプト ファイルを実行できます。<path to the script file>/First.sh上記の方法を使用して絶対パスを使用するか、
./First.shを使用してスクリプトへの相対パスを使用してスクリプトを実行できます。
Bash の文字列変数
Bash スクリプトで代入演算子 (=) を使用して、変数内の任意の文字列を宣言および初期化できます。
例えば:
#!/bin/Bash
S="Hello World"
echo $S
上記の例では、文字列変数 S を宣言し、値として Hello World で初期化します。 echo コマンドは、echo コマンドと $ 演算子を使用して、端末に文字列変数の値を表示します。
Bash スクリプトの文字列比較演算子
Bash スクリプトで = (等しい) 演算子を使用して 2つの文字列を比較できます。 また、== 演算子を使用して文字列を比較します。
== は、文字列比較の = 演算子と同義です。
たとえば、次の内容を含む Bash スクリプト First.sh を考えてみましょう。
#!/bin/Bash
S1="Hello World"
S2="Hello World"
if [ "$S1" = "$S2" ]
then
echo "Equal"
else
echo "Not Equal"
fi
次のスクリプトには 2つの文字列が含まれており、S1 と S2 の値は同じです。 if 条件は、= 演算子を使用して文字列を比較します。 ただし、if [ "$S1" == "$S2" ] ステートメントを使用してこれらの文字列を比較することもできます。
以下は、First.sh スクリプトの出力です。
Equal
注:
ifステートメントの=演算子の前後の空白を削除すると、たとえばif [ "$S1"="$S2" ]のように、文字列が正確に比較されなくなります。
!= (等しくない) 演算子は、2つの文字列の不等式の一致に使用されます。 この演算子は、if [ "$S1" != "$S2" ] を使用して、if ステートメントで使用できます。
このステートメントは、文字列 S1 と S2 が等しくない場合に true を返します。