文字列に部分文字列が含まれているかどうかをチェックするさまざまな例
時々、プログラミングの目的で特定の文字列が別の文字列に存在するかどうかを確認する必要があります。他のプログラミング言語のように、このタスクを実行するための組み込み関数がBashにはないため、このタスクを実行するためのいくつかのコマンドや演算子がBashにはあります。Bashで文字列が部分文字列を含むかどうかを確認するためのさまざまな方法がこのチュートリアルで示されています。
文字列が部分文字列を含むかどうかを確認する異なる例
このチュートリアルのこの部分では、メイン文字列における部分文字列の検索方法の違い、すなわち「if」文と「[[」式を使った方法、ならびに異なるタイプのBashコマンドが示されています。
例 1: 「If」文を使用して文字列を検索する
以下のスクリプトを使用して、文字列が他の文字列に存在するかどうかを確認するBashファイルを作成してください。ここで、メインの文字列と部分文字列の値は、readコマンドを使用してユーザーから取得されます。その後、if-else文は部分文字列が文字列の任意の部分と部分的に一致するかどうかを確認します。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Take the search string value
read -p "Enter the search string: " search
#Check whether the input string exists in the main string or not
if [[ $main_string == *$search* ]]
then
echo "String exists."
else
echo "String does not exist."
fi出力:
前のスクリプトを実行した後、メイン文字列の値が「linux-consoleへようこそ」で、部分文字列の値が「linux」と「Ubuntu」である場合、次の出力が表示されます:
例2: 「[[」を使用して文字列を検索
以下のスクリプトを使用して、Bashファイルを作成し、ある文字列が別の文字列に存在するかどうかを“[[ ”式を使用して確認します。ここでは、メイン文字列と部分文字列の値を前回の例のようにreadコマンドを使ってユーザーから取得します。次に、“[[ ”式は、メイン文字列の任意の部分で部分文字列が一致するかどうかを*を使って部分的に確認します。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Take the search string value
read -p "Enter the search string: " search
#Check whether the input string exists in the main string or not
[[ $main_string == *$search* ]] && echo "'$search' exists in the string." || echo "'$search' does not exist in the string."出力:
前のスクリプトを実行した後、メイン文字列の値が「Welcome to linux-console」で、部分文字列の値が「come」および「Come」である場合、次の出力が表示されます:
例3: 「Sed」コマンドを使用して文字列を検索する
次のスクリプトを使用して、文字列が別の文字列に存在するかどうかを確認するBashファイルを作成します。このスクリプトでは、メインの文字列の値はreadコマンドを使ってユーザーから取得します。部分文字列の値は、メインの文字列の中にその部分文字列が存在するかどうかをチェックするためにsedコマンドの正規表現に使用されます。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Check the input string exists in the main string or not
[ -n "$(sed -n '/Welcome/p' <<< $main_string)" ] && echo "String exists." || echo "String does not exist."出力:
前のスクリプトを実行した後、主な文字列の値が「Welcome to linux-console」であり、部分文字列の値が「Welcome」の場合、次の出力が表示されます:
例4: “Grep ”コマンドを使用して文字列を検索する
次のスクリプトを使用して、文字列が別の文字列に存在するかどうかを確認するBashファイルを作成します。このスクリプトでは、メインの文字列と部分文字列の値をユーザーから
read コマンドを使って取得します。次に、部分文字列の値をgrepコマンドと共に使用して、その値がメインの文字列に存在するかどうかを確認します。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Take the search string value
read -p "Enter the search string: " search
#Check whether the input string exists in the main string or not
grep -q "$search" <<< $main_string && echo "'$search' exists." || echo "'$search' does not exist."出力:
前のスクリプトを実行した後、メイン文字列の値が「Welcome to linux-console」で、部分文字列の値が「come」および「go」である場合、次の出力が表示されます:
例5: “Awk” コマンドを使用して文字列を検索する
次のスクリプトを使用して、文字列が別の文字列に存在するかどうかを確認するBashファイルを作成します。このスクリプトでは、メインの文字列の値はユーザーから<強>read強>コマンドを使用して取得します。サブ文字列の値は、<強>awk強>コマンドの正規表現で使用され、サブ文字列がメインの文字列に存在するかどうかを確認します。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Check whether the input string exists in the main string or not
awk '$0~/to/{print "String exists."}' <<< $main_string出力:
前のスクリプトを実行した後、主な文字列の値が「Welcome to linux-console」で、サブ文字列の値が「to」の場合、次の出力が表示されます:
例6: ケースオペレーターを使用して文字列を検索する
以下のスクリプトを使って、文字列が別の文字列に存在するかどうかを「case」文を用いてチェックするBashファイルを作成してください。ここでは、メイン文字列と部分文字列の値を前回の例のようにreadコマンドを使ってユーザーから取得します。次に、「case」文は、部分文字列がメイン文字列の任意の部分に一致するかを「*」を使って部分的にチェックします。
#!/bin/bash
#Assign the main string
main_string="Welcome to linux-console"
#Print the main string
echo "Main string is: $main_string"
#Take the search string value
read -p "Enter the search string: " search
#Check the input string exists in the main string or not
case $main_string in
*"$search"*)
echo "'$search' exists in the string." ;;
*)
echo "'$search' does not exist in the string." ;;
esac出力:
前のスクリプトを実行した後、メイン文字列の値が「Welcome to linux-console」で、部分文字列の値が「hint」と「Hint」である場合、次の出力が表示されます:
結論
他の文字列内に部分文字列が存在するかどうかは、Bashスクリプトを使用してさまざまな方法で確認できます。このタutorialでは、このタスクを実行するために異なるBashコマンドやステートメントを使用する方法を示しています。





