String If语句匹配包含双引号的字符串
我对bash脚本中的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
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