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

Jenkins Pipeline循环变量传递至Shell脚本时接收为空问题求助

问题原因
  • Jenkins侧的循环变量传递逻辑完全正常,从执行日志的+ bash ./check_access/check.sh 1记录可以确认,val的值已经正确替换并传入Shell命令
  • 问题出在Shell脚本的参数读取逻辑:你传入的是位置参数,Shell脚本中未提前定义val变量的前提下,$val会读取当前Shell环境的同名环境变量,而不是传入的位置参数,因此输出为空
解决方法

方案1(推荐,符合Shell传参规范)

修改Shell脚本的参数读取逻辑,Shell中第一个传入的位置参数对应$1,第二个对应$2,以此类推,将./check_access/check.sh内容修改为:

#!/bin/sh
echo "val: $1"

方案2(无需修改现有Shell脚本)

如果要保留Shell脚本中$val的写法,可以将val作为环境变量传给Shell进程,修改Jenkins Pipeline的sh步骤即可:

check = sh (script: """export val=${val}; bash ./check_access/check.sh""", returnStdout: true).trim()
优化建议

如果val的值包含空格、特殊符号,建议传参时加双引号避免解析错误,Pipeline写法调整为:

check = sh (script: """bash ./check_access/check.sh "${val}" """, returnStdout: true).trim()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:03