したがって、長い文字列があり、この文字列にbashスクリプトにサブ文字列が含まれていることを確認する必要があります。
bashシェルのサブストリングをチェックする方法は複数あります。最初にいくつかの簡単な例を示し、次に実際のシナリオでこの概念を使用するクールなbashスクリプトを示します。
ifelseステートメントを使用してbashのサブストリングをチェックする
bashの条件ステートメントに精通している場合は、次の方法で文字列に部分文字列が含まれているかどうかを確認できます。
if [[ $fullstring == *"$substr"* ]];
ここでは二重角かっこが必要です。他のツールを使用しないため、これはネイティブな方法だと思います。上記のスニペットを適切な例で説明しましょう。
長い文字列で変数を初期化します:
[email protected]:~$ fullstring="This is a string with a stretch"
次に、「stretch」という単語をsubstr1
という変数内に保存します。 :
[email protected]:~$ substr="stretch"
部分文字列を比較してみましょう:
[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then
ここで、*は0個以上の文字を意味します。 bashスクリプトの引用符の概念に精通していることを願っています。引用符内の$substrは、その値に置き換えられます。
基本的に、文字列全体がxxxxsubstrxxxxタイプのパターンと一致するかどうかを確認しています。
次のような変数を介して使用する代わりに、部分文字列を直接使用することもできます。
[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then
あなたは要点を理解します。サブストリングが見つからない場合に代替メッセージを表示するelseステートメントを使用してこのスクリプトを完成させます。
#!/bin/bash
fullstring="This is a string with a stretch"
substr="stretch"
if [[ $fullstring == *"$substr"* ]]; then
echo "Found $substr!"
else
echo "$substr not found!"
fi
上記のシェルスクリプトを実行すると、部分文字列が見つかることが簡単にわかります。
[email protected]:~$ bash substr.sh
Found stretch!
bashで部分文字列を見つけるためのより良い実例
部分文字列は、スクリプトでユーザーと「対話」するのに非常に役立ちます。 readコマンドを使用して、bashスクリプトがユーザー入力を受け入れるようにします。
echo "Hey there..what is your name?"
read Name
echo "Hello "$name"! The Matrix Resurrections trailer is here! Is your pill Red or Blue?"
read Pill
if [[ $Pill == *"Red"* || $Pill == *"red"* ]]; then
echo "Welcome..to the real world "$Name"!"
else
echo "Wake Up "$Name"!"
fi
実行可能権限を付与し、スクリプトを実行します:
[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh
上記のスクリプトの出力:
Hey there..what is your name?
avimanyu
Hello avimanyu! The Matrix Resurrections trailer is here! Is your pill Red or Blue?
I have Red pill
Welcome..to the real world avimanyu!
ここでは、大文字と小文字を区別する可能性のある2つの可能性に注意することで、if条件を少し改善しました。 Red
のみ ここの部分文字列です。しかし、red
可能な入力でもあります。そこで、別の条件を追加しました。 ||
「または」を示します。 Red
と入力した場合 、それは部分文字列です。ただし、red
1つではないので、追加する必要がありました。
grepコマンドを使用してbashでサブストリングを検索する
bashの文字列から部分文字列を見つける別の方法があります。この方法でgrepコマンドを使用します:
if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi
q
オプションは、grepがクワイエットモードになり、出力が表示されないことを意味します。 2つだけでなく3つあることに注意してください。
この簡単なチュートリアルが、文字列内の特定の部分文字列を探すのに役立つことを願っています。ご質問やご提案がございましたら、下にコメントを残してください。ところで..どのピルを選びましたか?選択しましたか?