String If语句匹配包含双引号的字符串

String If语句匹配包含双引号的字符串,string,bash,if-statement,grep,double-quotes,String,Bash,If Statement,Grep,Double Quotes,我对bash脚本中的if语句有问题。 目标是:我需要检查clustered的值,但因为它不是唯一的名称,所以我决定尝试匹配整个字符串。例如,要在此处查找clustered是否为真/假,则if将查找整个“相邻”字符串 问题是:虽然下面的if语句对某些字符串可以很好地工作,但它实际上对下面的值不起作用。我怀疑这是因为“false”周围的双引号 如果,是否可以更改此,使其生效(即接受额外的双引号) 我的狂欢: if grep -Fxq "<cache clustered="false" " co

我对bash脚本中的if语句有问题。 目标是:我需要检查
clustered
的值,但因为它不是唯一的名称,所以我决定尝试匹配整个字符串。例如,要在此处查找
clustered
是否为真/假,则
if
将查找整个“相邻”字符串

问题是:虽然下面的
if
语句对某些字符串可以很好地工作,但它实际上对下面的值不起作用。我怀疑这是因为
“false”
周围的双引号

如果,是否可以更改此
,使其生效(即接受额外的双引号)

我的狂欢:

if grep -Fxq "<cache clustered="false" " confg.xml
then
    echo "Correct value"
    # code if found
else
    echo "Incorrect value"
    # code if not found
fi

如果grep-Fxq“问题在于,在要进行grep的字符串周围以及字符串本身使用双引号。Bash通过将每个双引号与下一个双引号(而不是最后一个)匹配来解释引号。如果引号是圆括号,则第一行看起来像
如果grep-Fxq(尝试过这个,似乎效果不错

bash$ cat log; if grep -Fxq "<cache clustered=\"false\"" log ; then echo "got it"; else echo "missed"; fi
<cache clustered="false"
got it

bash$cat log;if grep-Fxq“在正则表达式周围使用单引号。或者,在一般情况下,使用带不同引号的相邻字符串。
“foo'”bar
正确地引用字符串
foo'”bar
——即
foo'
单引号中的“bar
。将双引号放在双引号中的另一种有趣的方式:
“blah blah blah”'““quote””““blah blah”
,即双引号中的
blah blah blah
,后跟
在单引号中,然后是双引号中的
blah blah
。它将被解释为
blah blah blah”quote“blah blah
“嘿,谢谢大家的回复,非常感谢。我选择了单引号解决方案,因为它是最简单的实现方案。嘿,谢谢大家的回复,非常感谢。我选择了单引号解决方案,因为它是最简单的实现方案。
bash$ cat log; if grep -Fxq "<cache clustered=\"false\"" log ; then echo "got it"; else echo "missed"; fi
<cache clustered="false"
got it