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

Muhammad Husnain 2023年1月30日
  1. 使用 case 條件語句(方法 1)
  2. if 語句中使用萬用字元(方法 2)
  3. 使用 Bash 的 grep 命令(方法 3)
  4. 使用正規表示式運算子 (~=)(方法 4)
在 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 次或多次子字串。

輸出:

使用正規表示式運算子

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

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn