如何检查字符串是否包含子字符串,而不是在Bash中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查字符串是否包含子字符串,而不是在Bash中相关的知识,希望对你有一定的参考价值。

我想在bash中使用switch / case语句来检查一个字符串的文件名是否包含某些东西但是也没有。

这是我的情况:

case "$fileName" in
    *Failed|!cp*)
       echo "match"
     ;;
esac

但是这当前不起作用,如何查看字符串是否匹配“失败”但是也不包含“cp”?

如果可以在开关/箱中完成,那将是很好的

答案

!必须跟随带括号的模式列表,而不是模式本身。

案件中的|是OR,而不是AND。要获得AND,你应该嵌套案例。

case "$fileName" in
    *Failed)
        case "$fileName" in
            cp*) ;;
            *) echo "match" ;;
        esac
     ;;
esac

或者您可以使用if而不是case

if [[ $filename = *Failed && $filename != cp* ]]
then echo match
fi
另一答案

或者,你可以使用if和管道,例如:

if echo 'Failed' | grep -v cp | grep -q Failed ; then
    echo Failed without cp
else
    echo It's either Winned or cp.
fi

以上是关于如何检查字符串是否包含子字符串,而不是在Bash中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Bash 检查文件是不是包含特定字符串

如何检查字符串是不是包含 JavaScript 预定义数组中存在的子字符串?

PHP-如何检查字符串是否包含子字符串PHP

PHP PHP - 如何检查字符串是否包含子字符串PHP

如何检查一个对象是不是至少包含一个键,其值包含 JavaScript 中的子字符串?

如何在bash中创建仅包含十六进制字符而不包含空格的文件的十六进制转储?