我正在尝试在 bash 脚本中匹配一个简单的正则表达式。它的行为与GNU bash 版本 4.2.24(1)-release (x86_64-pc-linux-gnu)一样,但与GNU bash 版本 3.2.25(1)-release (x86_64-redhat-linux-gnu )
这是代码:
#!/bin/bash
line="[foo]"
[[ $line =~ ^\[.*\]$ ]] && echo "regex matched"
echo "value of \$? : " $?
echo "value of BASH_REMATCH : " $BASH_REMATCH
/bin/bash --version|grep "GNU bash"
这是GNU bash 版本 4.2.24(1)-release (x86_64-pc-linux-gnu)的输出
$的正则表达式匹配
值?:BASH_REMATCH 的 0
值:[foo]
GNU bash,版本 4.2.24(1)-release (x86_64-pc-linux-gnu)
这是GNU bash 版本 3.2.25(1)-release (x86_64-redhat-linux-gnu)的输出
美元的价值?:
BASH_REMATCH 的 1 个值 :
GNU bash,版本 3.2.25(1)-release (x86_64-redhat-linux-gnu)
我在这里和其他地方阅读了很多关于=~中操作员行为的帖子,但我找不到任何有同样问题的人。我看到 bash 3.2 发生了重大变化,但据我所知,它应该从 3.2 开始工作。