在Bash中运用字符串时,常见的操作过程之一是确定一个字符串是否包含另一个字符串。
分别使用通配符检查是否包含字符串。运用case运算符,运用正则表达式匹配字符串,运用Grep匹配字符串。
有效的办法就是在子字符串运用星号*
重点围绕,并与输入的字符串比较。*
使用通配符主要是用来说明零个,一个或多个标识符的正则表达式。
另一个选择采用的是运算符=~
并与正则表达式.*
搭配使用。.*
带有星号的句点说明匹配零个或多个标识符,除了回车符以外的一切标识符。
在下面的案例中,我们使用if语句和同样运算符检查是否在STR
字符串中找到了子字符串SUB
:
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
#if [[ $VAR =~ .*Linux.* ]]; then
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
grep通常用于搜索文件,grep还可以加载标准输入,因此你还可以用grep检查字符串是否包含你特定字符串。
应用grep时你应该使用-q
选项让grep以忽略标准输出。倘若检验返回true
,则在字符串中包含子字符串。
在以下案例中,我们在这里字符串$STR
作为输入并传递给grep,检查是否在输入字符串中找到$SUB
字符串。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
检查字符串是否包含子字符串是Bash辅助制作中最基本且常见操作过程之一。阅读本入门教程后,您应该对怎么测试一个字符串是否包含另一个字符串有很好的把握。
您也可以使用其他命令,例如awk
或sed
进行测试。如果您有任何问题或意见和建议,请随时。
