最近我用这样的正则表达式测试编写了一个脚本:
# Works fine on Sabayon/Mac, doesn't work on CentOS
[[ $line =~ (.+)\{(.+)\} ]] || continue
它在Sabayon Linux和Mac上运行顺利,但后来我需要在其他环境中运行它并且脚本失败了。这是CentOS Linux。经过一段时间后我发现我需要进行双重反冲才能使其正常工作。
# Works fine on CentOS, does not on Sabayon/Mac
[[ $line =~ (.+)\\{(.+)\\} ]] || continue
环境清单:
为什么会这样?如何让它在两种环境下运行?
答案 0 :(得分:1)
您可以将表达式存储在变量中并在测试中使用它:
re="(.+)\{(.+)\}"
[[ $line =~ $re ]] || continue
我认为你真的不需要括号。 ".+\{.+\}"
也可以。