在 bash 腳本中如何檢查一個字符串是否包含另一個字符串
我們在寫 bash 腳本的時候,假如有一個字符串,我們想檢查其中是否包含另一個子字符串,那這個時候需要怎樣做呢?
在 bash 腳本中,有不止一種檢查子字符串的方法,我們今天介紹一些簡單的例子,然后在分享一個常用的 bash 腳本。
使用if-else語句檢查bash中的子字符串
如果您熟悉bash中的條件語句,可以使用它以以下方式檢查字符串是否包含子字符串:
一個簡單的例子
上面的腳本中使用了雙括號,這是有必要的,它是一種原生的方式,因為它沒有使用任何其他工具。下面我們舉個例子來對上面的腳本做一下解釋。
使用長字符串初始化變量:
然后,將字符串“stretch”存儲在變量 substr 中:
再然后進行字符串比較:
這里的星號 * 表示零個或多個字符。大家應該熟悉 bash 腳本中引號的概念,引號內的 $substr 將其替換為真實的值。
基本上,上述腳本是檢查完整的字符串是否與 xxxxxxsubstrxxxxxx 類型的字符串匹配。
另外,也可以直接使用子字符串,而不是通過變量:
下面我們使用 else 語句完成這個腳本,如果找不到子字符串,該語句將顯示另一條消息:
運行上述腳本,將會找到子字符串:
另一個例子
子字符串在腳本中非常有助于與用戶交互。使用 read 命令可以讓 bash 腳本接受用戶的輸入。
授予它可執行權限并執行腳本:
其輸出如下所示:
在上面的腳本中,我們使用 if 語句以考慮兩種可能性(區分大小寫)。Red 是一種可能的輸入,但是 red(小寫)也是一種可能性,所以我們添加了另一個條件,|| 表示 “或”,如果輸入為 Red,則它是一個子字符串。即使 red(小寫)不是用戶輸入,我們也需要 在腳本中添加上它。
使用 grep 命令 在 bash 中查找子字符串
這是在bash中查找字符串中的子字符串的另一種方法。按以下方式使用grep命令:
選項 -q 表示 grep 將處于安靜模式(quiet mode),不顯示任何輸出。另外需要注意,有 3 個 <,而不是 2 個。