Regex Shell正则表达式不匹配
我需要从shell scrip中的一行中提取版本,但我的正则表达式没有获取正确的值 这是我的剧本: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
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时会出现错误。今后,请在您的问题中包含此类错误。