在 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 個字串,str
和 substr
。我們應用了一個 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
輸出:
使用 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
輸出:
使用正規表示式運算子 (~=
)(方法 4)
還有另一個稱為 regex operator
(~=) 的運算子,我們可以用它比較兩個字串以及字串是否包含子字串。
指令碼:
#!/bin/bash
str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
echo "String contains the substring"
fi
請注意,在條件語句中,正規表示式運算子使右側字串成為正規表示式,符號 .*
表示比較字串中出現的 0 次或多次子字串。
輸出:
因此,你可以看到幾種從字串中查詢子字串的方法。
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