我在使用 bash =~ 运算符时遇到了奇怪的行为。基本上我想要做的是从一个 xml 文件中提取一个版本号。
这有效:
#!/bin/bash
CONTENT=$(cat some_file.xml)
PATTERN='<Version>(.*)</Version>'
if [[ $CONTENT =~ $PATTERN ]]
then
echo ${BASH_REMATCH[1]}
fi
// prints the version number
但这不会:
#!/bin/bash
CONTENT=$(cat some_file.xml)
if [[ $CONTENT =~ '<Version>(.*)</Version>' ]]
then
echo ${BASH_REMATCH[1]}
else
echo "Version not found!"
fi
// prints "Version not found!"
为什么在将模式放入变量时它匹配正则表达式,而当我只使用字符串本身时不匹配??
顺便说一句,如果有人在这种情况下有更好的方法来提取版本号,我也想听听,
谢谢!