当前位置: 首页 > 知识库问答 >
问题:

如何将svn命令输出分配给groovy脚本中的变量[重复]

商弘义
2023-03-14

我有一个这样的groovy脚本-

def BRANCH_REV = sh script: "svn info \$url | grep 'Last Changed Rev' | awk '{ print \$4; }'", returnStdout: true , trim: true

println "ccsmp - downstream testing for: $BRANCH_REV"

假设此脚本获取最后的修订号,并将该值放入名为“BRANCH\u REV”的变量中,第二行将打印该值。但我不断得到null值,我的控制台输出如下-

[branches%2Ffeatures%2Fcre40_jenkins] Running shell script
+ svn info
+ grep 'Last Changed Rev'
+ awk '{ print $4; }'
23401               <-- It is printing the revision number here

[Pipeline] echo
ccsmp - downstream testing for: 0      <-- but when I try to print the $BRANCH_REV, it prints out 0

[Pipeline] sh
[branches%2Ffeatures%2Fcre40_jenkins] Running shell script
+ echo 0
0                                    <-- same thing happens when I try to echo $BRANCH_REV

共有1个答案

潘意
2023-03-14

如果您的脚本在Jenkinsfile中并且您的管道配置为签出该Jenkinsfile(IE Jenkinsfile与您的代码一起存储),您可以简单地执行以下操作:

def BRANCH_REV = "r${SVN_REVISION}"
echo "Revision is ${BRANCH_REV}"
 类似资料:
  • 问题内容: 我刚开始学习groovy,我想将svnSourcePath和svnDestPath传递给svn copy命令中的shell脚本。但是网址未呈现。 输出量 问题答案: 在变量周围添加了单引号和加operator(’+ variable +’)。现在正在工作

  • 问题内容: 我想将要在以后使用的命令存储在变量中(不是命令的输出,而是命令本身) 我有一个简单的脚本,如下所示: 但是,当我尝试更复杂的操作时,它会失败。例如,如果我做 输出为: 知道如何将这样的命令(带有管道/多个命令)存储在变量中以备后用吗? 问题答案: 使用eval:

  • 问题内容: 我想要的是将git命令的输出(例如git status)存储在shell脚本的变量内。当我说输出时,我说的是在终端上执行命令时返回的文本,例如:在回购之外执行git status时: 我尝试了这个: 但是’var’没有存储任何东西。 问题答案: 您可以使用: 即将stderr重定向到stdout,然后捕获输出。 否则,当会写上错误消息并且您的命令:仅正在捕获时。

  • 问题内容: 我想将“ $ WORSKPACE”变量用于jenkins脚本调用的常规文件。但是在SO上找到的所有解决方案都失败了: 我得到的消息:脚本不允许使用groovy.lang.GroovyObject方法setProperty java.lang.String java.lang.Object(JenkinsHelper.name)。管理员可以决定是批准还是拒绝此签名。 对设置为允许Jenk

  • 问题内容: 我有一个PHP文件,需要从命令行运行(通过crontab)。我需要传递给文件,但我不知道如何。我试过了: 但是返回了此错误: 无法打开输入文件:myfile.php?type = daily 我能做什么? 问题答案: 该参数(在结束了阵列)仅适用于网络访问的页面。 您需要像调用它一样,并从数组中检索该参数(为,因为为)。 如果该页面也用作网页,则可以考虑两个选项。使用shell脚本和w

  • 问题内容: 我正在尝试将命令输出重定向到变量: 然后阅读: 运行它时,输出如下: 但是变量保持空白。对于其他命令,我已经尝试过相同的方法,并且一切正常。 这会将文件列表写入变量,以便以后可以读取。我应该怎么做才能使其正常工作? 问题答案: 也许输出去了,不是吗? 尝试这个: