我想测试指定文件中是否存在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行,如果它已经存在于指定的文件中。
答案 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将搜索相应的文件,当然不存在