我想检查文件是否包含bash中的字符串。对于常规字符串字符,我已经这样做了。但是,我需要检查一个包含双引号“。”的新字符串。
说字符串是:
PARAMETER_XYZ="no"
我尝试过此方法,但不起作用:
ABC=$(cat /etc/file)
if [[ $ABC = *"PARAMETER_XYZ=\"no\""*]] ; then
exit 0
fi
有什么建议吗?
答案 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。