我有一个 Jenkins 管道作业,我在其中使用名为 setup.sh 的 bash 脚本配置我的环境,如下所示:
#!/bin/bash
export ARCH=$1
echo "architecture = " ${ARCH}
在 Jenkins 管道脚本中,我调用 setup.sh 脚本:
def lib_arch='linux-ubuntu-14.04-x86_64-gcc4.8.4'
sh ". /opt/setup.sh ${lib_arch}"
不幸的是,NO 变量似乎被传递给了 setup.sh 脚本,并且 echo ${ARCH} 返回了一个空字符串! 我试着改为: sh "source/opt/setup.sh ${lib_arch}" 这也因“找不到源”消息而失败。 我还尝试将脚本的第一行更改为
#!/bin/sh
但这并没有帮助。那么如何在 Jenkins 管道脚本中将参数传递给我的 bash 脚本呢? 感谢您的帮助。
更新: Bert Jan Schrijve 在此线程中建议了一个解决方法(见下文):
sh "bash -c \" source /opt/setup.sh ${lib_arch}\""
最佳答案
如果您使用带三撇号的多行 shell 脚本,则必须使用以下语法:
sh '''
echo '''+varToPrint+'''
other commands...
'''
关于linux - 在 Jenkins 管道作业中将变量传递给 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323490/