HOWTO · Bash

在 Bash 中檢查某字串是否包含某子字串

一個 Bash 程式設計教程,用於查詢字串是否包含子字串。

從字串中查詢子字串是最常用的字串操作。有很多方法可以執行此任務。

在本文中,我們將看到多個基於 Bash 指令碼的實現來查詢給定字串是否包含特定子字串。

使用 case 條件語句(方法 1)

case 是 bash 中的條件語句,可用於在指令碼中實現條件塊。此語句可用於在 bash 中查詢子字串。

指令碼:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'

case $str in

  *"$substr"*)
    echo  "str contains the substr"
    ;;
esac

我們有 2 個字串,strsubstr。我們應用了一個 case 語句來查詢 str 是否包含 substr

輸出:

用例條件語句

if 語句中使用萬用字元(方法 2)

我們還可以在 if 語句中使用萬用字元從字串中查詢子字串。查詢子字串的最簡單方法是將萬用字元星號 (*) 放在子字串周圍並將其與實際字串進行比較。

指令碼:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if [[ "$str" == *"$substr"* ]]; then
  echo "String contains the sunstring"
else
  echo "String does'nt contains the substring"
fi

輸出:

在 if 語句中使用萬用字元

使用 Bash 的 grep 命令(方法 3)

grep 命令也用於從檔案或字串中查詢內容。它有一個選項 -q,它告訴 grep 命令不顯示輸出;返回

指令碼:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if grep -q "$substr" <<< "$str"; then
  echo "String contains the substring"
fi

輸出:

使用 Bash 的 grep 命令

使用正規表示式運算子 (~=)(方法 4)

還有另一個稱為 regex operator (~=) 的運算子,我們可以用它比較兩個字串以及字串是否包含子字串。

指令碼:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
  echo "String contains the substring"
fi

請注意,在條件語句中,正規表示式運算子使右側字串成為正規表示式,符號 .* 表示比較字串中出現的 0 次或多次子字串。

輸出:

使用正規表示式運算子

因此,你可以看到幾種從字串中查詢子字串的方法。