You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中使用read命令赋值多行字符串时出现退出码1错误

Jenkins流水线中用read赋值多行字符串报错的解决方法

问题原因

你脚本里的here-doc结束标记EOF带有缩进,bash无法识别它为read命令的结束符,导致read一直等待输入直到脚本终止,返回非0退出码,触发-e选项(遇到错误立即退出),最终Jenkins报exit code 1。

解决方案

方案1:将EOF顶格写

直接把结束标记EOF放在行首,去掉前面的缩进:

stage('test step') {
      steps {
             sh '''#!/bin/bash -xe

             read -r -d '' MULTI_LINE_VAR_STRING <<EOF
example row 1
example row 2
example row 3
EOF
             ''' 
      }
}

方案2:用<<-EOF忽略EOF前的制表符缩进

如果想保留缩进格式,可以用<<-EOF,此时EOF前面的制表符会被忽略(注意只能是制表符,不能是空格):

stage('test step') {
      steps {
             sh '''#!/bin/bash -xe

             read -r -d '' MULTI_LINE_VAR_STRING <<-EOF
             example row 1
             example row 2
             example row 3
             EOF
             ''' 
      }
}

验证说明

两种方案都能让bash正确识别here-doc的结束标记,read命令成功读取多行字符串到变量中,避免因未找到结束符导致的退出错误。

内容的提问来源于stack exchange,提问作者Martin Bohm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:15:34