如何在Linux Shell中将子字符串与特殊字符匹配?

时间:2018-10-05 21:30:12

标签: linux shell

我想检查文件是否包含bash中的字符串。对于常规字符串字符,我已经这样做了。但是,我需要检查一个包含双引号“。”的新字符串。

说字符串是:

PARAMETER_XYZ="no"

我尝试过此方法,但不起作用:

ABC=$(cat /etc/file)
if [[ $ABC = *"PARAMETER_XYZ=\"no\""*]] ; then
   exit 0
fi

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

grep是查找字符串是否存在的首选程序。

if grep 'PARAMETER_XYZ="no"' /etc/file > /dev/null then
   exit 0
fi

如果您确实需要,您仍然可以使用[[来做到这一点:

ABC=$(cat /etc/file)
if [[ $ABC = *'PARAMETER_XYZ="no"'* ]] ; then
   exit 0
fi

但是,如果这实际上是您要解析的配置文件,那么有更好的解决方案比寻找确切的字符串要脆弱得多。该文件看起来甚至可能是shell变量文件,在这种情况下,您可以source对其进行处理,然后直接检查$ PARAMETER_XYZ。