如何从Jenkins输出中提取变量(用户名、ID)

如何从Jenkins输出中提取变量(用户名、ID),jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,这是我得到的输出: 已成功创建临时组织:oopoop,用户名:test+color@example.com" 当我运行以下脚本时: echo“1.创建临时组织” def orgStatus=bat returnStdout:true,脚本:“sfdx force:org:create--definitionfile${PROJECT\u SCRATCH\u PATH}--durationdays 30--setalias${SCRATCH\u org\u NAME}-v DevHub” 如果(!

这是我得到的输出:

已成功创建临时组织:oopoop,用户名:test+color@example.com"

当我运行以下脚本时:

echo“1.创建临时组织”
def orgStatus=bat returnStdout:true,脚本:“sfdx force:org:create--definitionfile${PROJECT\u SCRATCH\u PATH}--durationdays 30--setalias${SCRATCH\u org\u NAME}-v DevHub”
如果(!orgStatus.contains(“已成功创建临时组织”)){
错误“临时组织创建失败”
}否则{
回声状态
}                           

现在,我需要分别从输出中提取临时组织ID和用户名,并将其存储起来

您可以使用正则表达式:

def regEx='已成功创建临时组织:(.*),用户名:(.*)'
def match=orgStatus=~regEx
如果(匹配){
println“ID:+匹配[0][1]
println“用户名:“+匹配[0][2]
}
这里运算符
=~
将正则表达式应用于输入,结果存储在
匹配中


@VikramReddy我不明白,用户名可在
匹配[0][2]
@VikramReddy中找到。只提取逗号以下的最小字符数需要问号。否则,当用户名包含逗号时,我们将提取太多内容。用户名位于字符串的末尾,所以这里不需要问号。@VikramReddy您可以将其作为参数传递,这取决于命令。如果我想在以下命令中使用sfdx force:org:create match[0][2],这是我添加“$”符号的方式还是应该添加“$”符号before@VikramReddy
${match[0][2]}
。就个人而言,我会将用户名存储在一个变量中以使代码更具可读性:
def username=match[0][2]
,然后
sfdx force:org:create$username
这是否回答了您的问题?