目次:
Bashスクリプトを記述するとき、2つの文字列を比較して、それらが等しいかどうかを確認する必要がよくあります。 2つの文字列は、長さが同じで、同じ文字シーケンスを含む場合に等しくなります。
このチュートリアルでは、Bashで文字列を比較する方法について説明します。
比較演算子
比較演算子は、値を比較してtrueまたはfalseを返す演算子です。 Bashで文字列を比較する場合、次の演算子を使用できます。
-
string1 = string2
およびstring1 == string2
オペランドが等しい場合、等価演算子はtrueを返します。-
test
=
演算子を使用し; then echo "Strings are equal." else echo "Strings are not equal." fi
; then echo "Strings are equal." else echo "Strings are not equal." fi
スクリプトが実行されると、次の出力が出力されます。
Strings are equal.
ユーザーからの入力を受け取り、指定された文字列を比較する別のスクリプトを次に示します。 この例では、
]; then echo "Strings are equal." else echo "Strings are not equal." fi
を使用し]; then echo "Strings are equal." else echo "Strings are not equal." fi
]; then echo "Strings are equal." else echo "Strings are not equal." fi
スクリプトを実行し、プロンプトが表示されたら文字列を入力します。
Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.
また、論理および
&&
およびまたは||
使用することもできます。 文字列を比較するには:] && echo "Equal" || echo "Not equal"
文字列に部分文字列が含まれているかどうかを確認します
文字列に部分文字列が含まれているかどうかを確認する方法は複数あります。
1つの方法は、サブストリングをアスタリスク記号
*
で囲むことです。これは、すべての文字に一致することを意味します。#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
スクリプトは次をエコーします。
It's there.
別のオプションは、以下に示すように正規表現演算子
=~
を使用することです。#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
アスタリスク
.*
続くピリオドは、改行文字以外の任意の文字の0回以上の出現に一致します。文字列が空かどうかを確認する
多くの場合、変数が空の文字列かどうかも確認する必要があります。 これを行うには、
-n
および-z
演算子を使用します。#!/bin/bash VAR='' if]; then echo "String is empty." fi
String is empty.
#!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi
文字列とケース演算子の比較
テスト演算子を使用する代わりに、caseステートメントを使用して文字列を比較することもできます。
#!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac
辞書編集の比較
辞書編集比較は、文字列内の文字を左から右に順番に比較することにより、2つの文字列をアルファベット順に比較する操作です。 この種の比較はめったに使用されません。
次のスクリプトは、2つの文字列を辞書式に比較します。
#!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi
スクリプトは次を出力します。
Ubuntu is lexicographically greater than Linuxize.
結論
文字列の比較は、Bashスクリプトで最も基本的で頻繁に使用される操作の1つです。 このチュートリアルを読んだ後、Bashで文字列を比較する方法を十分に理解する必要があります。 文字列の連結に関するガイドも確認できます。
バッシュターミナル
-