首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Jenkins Pipeline 中 sh 命令的正确打开方式:获取输出与状态码的完整指南

Jenkins Pipeline 中 sh 命令的正确打开方式:获取输出与状态码的完整指南

作者头像
Python运维开发
发布2025-09-29 14:14:12
发布2025-09-29 14:14:12
6900
代码可运行
举报
文章被收录于专栏:Python运维开发Python运维开发
运行总次数:0
代码可运行

项目中遇到了需要判断状态码的需求从网上找了些参考文档,最近有时间,整理了下,进入正题

在使用 Jenkins Pipeline 进行自动化构建和部署时,我们经常需要执行 Shell 命令,并获取命令的输出结果或执行状态。然而,很多同学对 sh 步骤的用法不够熟悉,导致脚本出错或逻辑异常。

今天,我们就来系统梳理一下 Jenkins Pipeline 中 sh 命令的两种用法:

  1. 获取 Shell 命令的标准输出(Standard Output)
  2. 获取 Shell 命令的执行状态(Exit Status)

一、获取 Shell 命令的标准输出(returnStdout)

当我们需要执行一个命令并获取其输出内容(比如获取文件md5 ),可以使用 returnStdout: true

代码语言:javascript
代码运行次数:0
运行
复制
def result = sh(script:"echo 'haha'",returnStdout:true).trim()echo "${result}"

一行写法

代码语言:javascript
代码运行次数:0
运行
复制
def result = sh(script:"haha", returnStdout:true).trim()echo "${result}"

⚠️ 注意:sh 返回的是字符串输出,不是 result 对象!


二、获取 Shell 命令的执行状态(returnStatus)

默认情况下,如果 Shell 命令执行失败(返回非0状态码),Jenkins 会直接中断 Pipeline。 如果希望捕获错误而不中断,比如判断某个服务进程是否存在、文件是否存在等。

这时,使用 returnStatus: true

示例:

代码语言:javascript
代码运行次数:0
运行
复制
def status = sh(script:"netstat -tunlp|grep java|grep 8088",returnStatus:true)
if (status == 0) {    
    echo "进程存在"
}else {    
     echo "进程不存在"
}

两种方式对比

方法

用途

是否中断 Pipeline

推荐场景

returnStdout: true

获取命令输出

失败时中断

获取版本号、MD5、主机名等

returnStatus: true

获取状态码

不中断

条件判断、错误容忍


建议

  1. 获取输出加 .trim():去除换行符和空格。
  2. 状态码判断用 == 0:0 表示成功。
  3. 错误处理可以加异常处理(非必须):使用 try-catchreturnStatus 避免 Pipeline 意外中断。
代码语言:javascript
代码运行次数:0
运行
复制
sh(script: 'cmd', returnStdout: true).trim()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python运维开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取 Shell 命令的标准输出(returnStdout)
    • 一行写法
    • ⚠️ 注意:sh 返回的是字符串输出,不是 result 对象!
  • 二、获取 Shell 命令的执行状态(returnStatus)
  • 两种方式对比
  • 建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档