【问题标题】:Test if specific xml string exists in a file测试文件中是否存在特定的 xml 字符串
【发布时间】:2015-05-23 15:00:09
【问题描述】:

我想测试xml头是否存在于指定文件中。

我正在使用类似的东西:

FILE=${1}
PATTERN="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
if grep -Fxq ${PATTERN} ${FILE}
then
    echo "already exists"
else
    echo "not exists"
fi

但它会返回:

grep: version="1.0": No such file or directory
grep: encoding="UTF-8": No such file or directory
grep: standalone="no"?>: No such file or directory
not exists

但是,PATTERN 已经存在于文件中。基本上我只是不想创建一个新的 PATTERN 行,如果它已经存在于指定的文件中。

【问题讨论】:

  • ${PATTERN} 括在双引号之间:"${PATTERN}"

标签: string bash file parsing grep


【解决方案1】:

${PATTERN} 括在双引号之间:"${PATTERN}"

以下应该有效:

FILE=${1}
PATTERN="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
if grep -Fxq "${PATTERN}" ${FILE}
then
    echo "already exists"
else
    echo "not exists"
fi

没有引号的情况是if命令扩展为grep -Fxq &lt;?xml version....version,而另一部分被解释为参数,所以grep会搜索对应的文件,当然不存在

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2011-06-12
    • 2013-07-28
    • 2012-04-25
    相关资源
    最近更新 更多