Regex Shell正则表达式不匹配

Regex Shell正则表达式不匹配,regex,shell,unix,Regex,Shell,Unix,我需要从shell scrip中的一行中提取版本,但我的正则表达式没有获取正确的值 这是我的剧本: versionLine="Creating version 1.0.74 ++ grep 'Creating version ' /tmp/apps/runtime/data/jenkins/jobs/myJob/build/68/log" re=".*Creating version (.*) \+\+.*" if [[ ${versionLine} =~ $re ]] then

我需要从shell scrip中的一行中提取版本,但我的正则表达式没有获取正确的值

这是我的剧本:

versionLine="Creating version 1.0.74 ++ grep 'Creating version ' /tmp/apps/runtime/data/jenkins/jobs/myJob/build/68/log"
re=".*Creating version (.*) \+\+.*"

if [[ ${versionLine} =~ $re ]]
then
        echo FOUND: ${BASH_REMATCH[1]}
fi

如果,则代码不在内。我想回应:
FOUND:1.0.74

您的脚本只使用bash语法,但没有shebang

添加到顶部:

#!/usr/bin/env bash
(或
#!/bin/bash
,视情况而定)


…并确保您不会使用
sh yourscript

奇怪来调用它。它对我有用…顺便说一句,前导和尾随的
*
是隐式的。你不需要它们。不管怎样——你在这里给出的代码是有效的,如果它像shell一样运行的话。(如果您使用
sh
运行它,则不会太多)。你能准确地告诉我们它是如何被调用的,发出了什么错误,等等吗?在将来,确保你提供了一部分“可验证的”部分,如果别人复制并粘贴了你提供的内容,他们应该自己看到这个错误。@Theotherguy,我不同意:这不是MCVE,因为没有人能真正验证它。如果它在运行时确实产生了bug,那么它将是一个MCVE。谢谢@charlesduff!这就是问题所在!在这种情况下,当脚本试图运行时,打印stderr时会出现错误。今后,请在您的问题中包含此类错误。