【发布时间】:2017-10-02 16:47:55
【问题描述】:
我需要从 shell 脚本中的一行提取版本,但我的正则表达式没有获取正确的值。
这是我的脚本:
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
代码不会进入if。我想回声:FOUND: 1.0.74
【问题讨论】:
-
奇怪。它对我有用...
-
顺便说一句,前导和尾随
.*是隐式的。你不需要它们。 -
无论如何——你在此处提供的代码工作,如果以 bash 作为 shell 运行。 (如果您使用
sh运行它,则不多)。你能告诉我们它是如何被调用的,发出了什么错误等等吗? -
在未来,请确保您提供minimal reproducible example——“可验证”部分的一部分是其他人应该自己看到错误,如果他们复制并粘贴什么你提供了。
-
@thatotherguy,我不同意:这不是 MCVE,因为没有其他人可以真正验证它。如果它实际上在运行时产生了错误,那么它将是一个 MCVE。