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

Jenkins Pipeline中cat命令输出无法存入变量的问题解决

问题原因

你的脚本使用Groovy多行双引号字符串执行shell命令时,${url}会被Groovy提前解析替换成URL内容。而URL里的&符号会被shell识别为命令分隔符,把&width=2000当成新的后台命令执行,导致输出异常。

解决方案

以下两种方式均可修复问题:

方式一:用单引号包裹shell脚本,让shell自行处理变量

避免Groovy提前插值,同时给shell变量加双引号,确保特殊字符被正确解析:

def url
pipeline{
    agent any
    stages{
     stage("Printing file"){
           sh "cat url_pdf.txt"
          }
     stage("Accessing the variable value") {
            steps {
                script {
                    url = sh (script: 'cat url_pdf.txt',returnStdout: true).trim()
                    sh '''
                      echo "$url"
                      '''
                   }
            }
        }
    }
}

方式二:Groovy插值时给URL添加双引号

如果坚持使用双引号多行字符串,给插值后的URL套上双引号,让shell将整个URL视为一个整体:

def url
pipeline{
    agent any
    stages{
     stage("Printing file"){
           sh "cat url_pdf.txt"
          }
     stage("Accessing the variable value") {
            steps {
                script {
                    url = sh (script: 'cat url_pdf.txt',returnStdout: true).trim()
                    sh """
                      echo "${url}"
                      """
                   }
            }
        }
    }
}
说明

两种方法都能保证shell输出完整的URL,避免特殊字符被错误解析。优先推荐方式一,它减少了Groovy与shell之间的插值冲突,稳定性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:52:49