2021-05-12 14:32:11
在 Bash 中如何檢查字串是否包含某個子串
在 Bash 中使用字串時最常見的操作之一是確定字串是否包含另一個字串。
在本文中,我們將向您展示檢查字串是否包含子字串的幾種方法。
使用萬用字元
最簡單的方法就是使用星號萬用字元 * 包裹子字串,並與字串比較。萬用字元是用於表示零個,一個或多個字元的符號。
如果測試返回 true ,則子字串包含在字串中。
在下面的範例中,我們使用 if 語句和相等運算子 (==) 來檢查是字串 STR 中是否包含子字串 SUB:
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
執行時指令碼將輸出:
OutputIt's there.
使用 case 運算子
除了使用 if 語句,您也可以使用 case 語句來檢查字串是否包含另一個字串。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
case $STR in
*"$SUB"*)
echo -n "It's there."
;;
esac
使用正規表示式運算子
確定字串中是否出現指定子字串的另一個選項是使用正規表示式運算子 =~ 。使用此運算子時,右字串被視為正規表示式。
.* 表示零或多個除了換行符之外的任何字元。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" =~ .*"$SUB".* ]]; then
echo "It's there."
fi
該指令碼將 echo 以下內容:
OutputIt's there.
使用 Grep
使用 grep 命令也可以用來查詢其他子串。
在下面的範例中,我們將字串 $STR 作為輸入傳遞給 grep 並檢查字串 $SUB 是否在輸入字串中找到。該命令將根據情況返回 true 或 false。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
選項 -q 告訴 grep 要靜默執行,省略輸出。
結論
檢查字串是否包含子字串是 Bash 指令碼中最基本和最常用的操作之一。
閱讀本教學後,您應該很好地理解如何測試字串是否包含另一個字串。您還可以使用其他命令,例如 awk 或 sed 用於測試。
相關文章