//获取标准输出
//第一种

result = sh returnStdout: true ,script: "<shell command>"
result = result.trim()

//第二种

result = sh(script: "<shell command>", returnStdout: true).trim()

//第三种

sh "<shell command> > commandResult"
result = readFile('commandResult').trim()

//获取执行状态

//第一种

result = sh returnStatus: true ,script: "<shell command>"
result = result.trim()

//第二种

result = sh(script: "<shell command>", returnStatus: true).trim()

//第三种

sh '<shell command>; echo $? > status'
def r = readFile('status').trim()

//无需返回值,仅执行shell命令

//最简单的方式

sh '<shell command>'

例如:

工作中需要获取shell 命令的执行状态,返回0或者非0
groovy语句写法为:

def exitValue = sh(script: "grep -i 'xxx' /etc/myfolder", returnStatus: true)
echo "return exitValue :${exitValue}"
if(exitValue != ){
执行操作
}

如果grep命令执行没有报错,正常情况下exitValue为0,报错则为非0

需要注意的是当命令中存在重定向的时候,会出现返回状态异常,因为我们要返回状态,删除重定向(&>/dev/null)即可,比如:

def exitValue = sh(script: "grep -i 'xxx' /etc/myfolder &>/dev/null", returnStatus: true)
xxx不存在,正常逻辑是返回非0,但是实际中返回的是0 。可以理解为先执行命令然后赋值操作,类似下面的动作:(个人理解)
sh "ls -l > commandResult"
result = readFile('commandResult').trim()

groovy中存在另外一种解析shell脚本的方法,在jenkins pipeline中会使用会报异常,jenkins相关资料中也没有看到此种用法,应该是不支持

groovy.lang.MissingPropertyException: No such property: rhel for class: groovy.lang.Binding

写法为:

def command = "git log"
def proc = command.execute()
proc.waitFor()
def status = proc.exitValue()

相关资料:

https://stackoverflow.com/questions/36547680/how-to-do-i-get-the-output-of-a-shell-command-executed-using-into-a-variable-fro
https://issues.jenkins-ci.org/browse/JENKINS-26133
https://stackoverflow.com/questions/36956977/how-to-execute-a-command-in-a-jenkins-2-0-pipeline-job-and-then-return-the-stdou
---------------------
作者:liurizhou
来源:CSDN
原文:https://blog.csdn.net/liurizhou/article/details/86670092
版权声明:本文为博主原创文章,转载请附上博文链接!

jenkins pipeline中获取shell命令的标准输出或者状态的更多相关文章

  1. [转] Jenkins pipeline 中获取 exit code, stdout and stderr 返回值和输出

    [From] https://issues.jenkins-ci.org/browse/JENKINS-44930 其做法是,把stdout定向到一个文件,sh 配置 returnStatus: tr ...

  2. linux C程序中获取shell脚本输出(如获取system命令输出)

    转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...

  3. 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库

    1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...

  4. linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...

  5. 在 Ruby 中执行 Shell 命令的 6 种方法

    我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...

  6. Awk中调用shell命令

    Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...

  7. vim中执行shell命令小结

    vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如:!ls -l ...

  8. 【转载】如何在C语言中调用shell命令

    转载自:http://blog.csdn.net/chdhust/article/details/7951576 如何在C语言中调用shell命令 在linux操作系统中,很多shell命令使用起来非 ...

  9. 让你提前认识软件开发(23):怎样在C语言中运行shell命令?

    第1部分 又一次认识C语言 怎样在C语言中运行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上, ...

随机推荐

  1. Tosca 给定义变量,取内容放到变量里

    可以在TOOLS里 buffer viewer里面搜索查自己的变量

  2. idea 配置文件中文显示问题

    配置文件中的中文,有时候会显示异常,因此需要修改文件编码格式修改.下面红框位置需要勾选上.

  3. python-learning-第二季-画图matplotlib

    https://www.bjsxt.com/down/8468.html 绘制方法: 绘制直线: #coding:utf- import matplotlib.pyplot as plt #准备绘制的 ...

  4. libfacedetection 人臉識別

    计算相似度,然后比对 QVector<cv::Point> vec_point1 = facedetect_frontal_surveillance4(face_img.clone()); ...

  5. faster_rcnn mAP

  6. vs webapi 取消controller

    1.添加引用 using Panda.DynamicWebApi; 2.starup.cs public void ConfigureServices(IServiceCollection servi ...

  7. ES6深入浅出-4 迭代器与生成器-2.Symbol 和迭代器

    symbol https://zhuanlan.zhihu.com/p/22652486 Es5中的数据类型,所有的复杂类型都是对象类型. ES6里面增加了symbol类型,用处不多. https:/ ...

  8. matlab优化函数fminunc

    一起来学演化计算-matlab优化函数fminunc 觉得有用的话,欢迎一起讨论相互学习~Follow Me fminunc 求无约束多变量函数的最小值 非线性编程求解器 找到指定问题的最小值,\(m ...

  9. 一秒解决--------No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    在打war包时候遇到错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (d ...

  10. Jquery操作表格多出一个内容行

    目录 前言 需求 如何监听每一行点击,获取点击id 前后端 问题更新,ajax异步带来的问题 废弃使用HTML拼接 前言 我的前端实在是太差劲了,导致Jquery操作表格多出一个内容行,这个功能我都做 ...