测试文件中是否存在特定 xml 字符串
Test if specific xml string exists in a file
我想测试 xml header 是否存在于指定文件中。
我正在使用类似的东西:
FILE=
PATTERN="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
if grep -Fxq ${PATTERN} ${FILE}
then
echo "already exists"
else
echo "not exists"
fi
但是 returns :
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}"
以下应该有效:
FILE=
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 将搜索相应的文件,这当然不存在
我想测试 xml header 是否存在于指定文件中。
我正在使用类似的东西:
FILE=
PATTERN="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
if grep -Fxq ${PATTERN} ${FILE}
then
echo "already exists"
else
echo "not exists"
fi
但是 returns :
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}"
以下应该有效:
FILE=
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 将搜索相应的文件,这当然不存在