jenkins pipeline中获取shell命令的标准输出或者状态的方法小结
作者:发哥随手记
这篇文章主要介绍了jenkins pipeline中获取shell命令的标准输出或者状态,工作中需要获取shell 命令的执行状态,返回0或者非0,本文给大家介绍的非常详细,需要的朋友可以参考下
//获取标准输出 //第一种 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) // 如果grep命令执行没有报错,正常情况下exitValue为0,报错则为非0 echo "return exitValue :${exitValue}" if(exitValue != 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()
到此这篇关于jenkins pipeline中如何获取shell命令的标准输出或者状态的文章就介绍到这了,更多相关jenkins pipeline获取shell命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- Jenkins迁移之pipeline共享库的实践示例
- jenkins插件Pipeline脚本jenkinsfile操作指南
- Jenkins插件pipeline原理及使用方法解析
- jenkins 构建项目之 pipeline基础教程
- Jenkins Pipeline 部署 SpringBoot 应用的教程详解
- 使用Jenkins Pipeline自动化构建发布Java项目的方法
- jenkins pipeline中获取shell命令的标准输出或者状态的方法小结
- Jenkinsfile 中如何在 `sh` 步骤中执行多行 Shell 命令(多行命令的方法)
- 如何解决jenkins 执行shell脚本 sh: ... not found的问题
- jenkins+shell自动化部署的实现步骤
- jenkins 实现shell脚本化定时执行任务的方法