在 IF 语句中使用多个子句比较正则表达式

在 IF 语句中使用多个子句比较正则表达式

我正在编写一个执行各种任务的 bash 程序。我有一个 IF 语句可能会导致问题。下面的脚本正确吗?

if [[ ! $description =~ "Design" ]] || [[ ! $description =~ "Digital" ]]; then

        echo 'Does not match Design or Digital'
else
        echo 'A match has been found'
fi

答案1

我找到了解决这个问题的办法。正如您提到的steeldriver,它在语法上是正确的,但我对子句中的运算符进行了修改。

#/bin/bash

description="Advert"

if [[ $description =~ "Design" ]] || [[ $description =~ "Digital" ]]; then

    echo 'Matches Design or Digital'
else
    echo 'Does not match'
fi

谢谢大家的建议!

答案2

为了使输出的消息在原文中正确,第一个回显应该说Does not match Design *and* DigitalDigital Design例如,在字符串 上会找到匹配项。


=~在 中使用正则表达式运算符时bash,左侧应是带引号的字符串,右侧通常应不带引号:

#/bin/bash

description='Advert'

if [[ "$description" =~ Design  ]] ||
   [[ "$description" =~ Digital ]]; then
    echo 'Matches Design or Digital'
else
    echo 'Does not match'
fi

这并不重要情况下,但它在以下情况下会发生:

description='Advert'

if [[ "$description" =~ "Ad.*" ]]; then
    echo 'Matches "Ad.*"'
else
    echo 'Does not match'
fi

这将打印Does not match.

相关内容