Bash 中的奇怪行为 =~ 运算符

时间:2021-02-23 12:36:03

标签: bash

我在使用 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!"

为什么在将模式放入变量时它匹配正则表达式,而当我只使用字符串本身时不匹配??

顺便说一句,如果有人在这种情况下有更好的方法来提取版本号,我也想听听,

谢谢!

0 个答案:

没有答案
相关问题