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

Jenkins流水线sh脚本中Docker容器文件复制至主机报错排查

问题分析与解决

核心原因

你的${dockername}变量值里包含了换行符或其他空白控制字符,导致Groovy替换变量后,命令被拆分成了两行:

sudo docker cp d13eed950bad
:/home/jenkins/workspace/Knife/Component_version.txt /data/test/source/Component_version.txt

shell执行时只识别第一行,自然会报参数不足的错误。

解决步骤

  1. 验证变量取值
    在流水线脚本里添加打印语句,确认变量内容是否存在多余空白:
echo "dockername值为: '${dockername}'"

如果输出里dockername的内容后跟着换行,就坐实了问题根源。

  1. 清理变量中的空白字符
    使用变量时加上trim()方法,去掉前后的换行、空格、制表符:
sh """
#!/bin/bash
sudo docker cp ${dockername.trim()}:/home/jenkins/workspace/Knife/Component_version.txt /data/test/source/Component_version.txt
"""
  1. 备选方案:通过环境变量传递
    如果不想依赖Groovy的变量替换,可以把清理后的变量存入环境变量,再在shell脚本中调用:
env.DOCKER_NAME = dockername.trim()
sh '''
#!/bin/bash
sudo docker cp ${DOCKER_NAME}:/home/jenkins/workspace/Knife/Component_version.txt /data/test/source/Component_version.txt
'''

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:06