Bash Shell怎么判断字符串的包含关系

发布于 2022-08-24 02:08:43 字数 68 浏览 15 评论 0

在Bash Shell里处理字符串,怎么能判断一个字符串是不是另一个的子字符串?
有木有灰常简单的方法啊~~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

饭团 2022-08-31 02:08:44

最简单的是用expr命令:

sorry, index貌似不是我想的那个意思,expr index strings chars,只要chars中的任意一个字符在strings中出现,就返回所在的位置,否则返回0

$ str="hello,world"
$ expr match "$str" ".*llo"
5
$ expr match "$str" ".*llt"
0

所以如何判断一个字符串是否包含某个子串:

$ test `expr match "$str" ".*$pat"` -ne 0

当然也是可以用grep命令来判断的:

$ echo “$str” | grep -q ”$pat”
$ echo $?
星星的轨迹 2022-08-31 02:08:43

可以换个角度,这样考虑,试图替换原字符串中的模式串内容:

function substr
{
    STRING_A=$1
    STRING_B=$2

    if [[ ${STRING_A/${STRING_B}//} == $STRING_A ]]
    then
        ## is not substring.
        echo N
        return 0
    else
        ## is substring.
        echo Y
        return 1
    fi
}

substr "ThisIsAString" "SUBString" # should output N
substr "ThisIsAString" "String" # should output Y
妥活 2022-08-31 02:08:43
#!/bin/bash

strA="dkasnfk"
strB="asn"
strC="knk"

result=$(echo $strA | grep "${strC}")
if [[ "$result" != "" ]]
then
    echo "True"
else
    echo "False"
fi
梅倚清风 2022-08-31 02:08:43

简单示例:

#!/bin/sh

thisString="1 2 3 4 5" # 源字符串
searchString="1 2" # 搜索字符串

case $thisString in 
    *"$searchString"*) echo Enemy Spot ;;
    *) echo nope ;;
esac
眼泪淡了忧伤 2022-08-31 02:08:43

string='My string';

if [[ $string == *My* ]]
then
echo "It's there!";
fi

http://stackoverflow.com/questions/229551/string-contains-in-bash

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文