测试文件中是否存在特定的xml字符串

时间:2015-03-20 08:43:15

标签: string bash file parsing grep

我想测试指定文件中是否存在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行,如果它已经存在于指定的文件中。

1 个答案:

答案 0 :(得分: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 <?xml version....,因此version,而另一部分被解释为参数,因此grep将搜索相应的文件,当然不存在