我想使用一个在Jenkinsfile
脚本中使用的变量,然后将其值传递给shell脚本执行(作为环境变量或命令行参数)。
但下面的Jenkinsfile
:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh 'echo "from shell i=$i"'
}
给出输出:
a
from shell i=
b
from shell i=
c
from shell i=
所需的输出如下所示:
a
from shell i=a
b
from shell i=b
c
from shell i=c
你知道如何将i
的值传递给shell脚本吗?
**编辑:**根据Matt's的答案,我现在使用以下解决方案:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "i=${i}; " + 'echo "from shell i=$i"'
}
这样做的好处是,我不需要在shell脚本中转义"
。
4条答案
按热度按时间i7uaboj41#
你的代码使用的是一个文字字符串,因此你的Jenkins变量不会被插入到shell命令中。你需要使用
"
将变量插入到sh
中的字符串中。'
只会传递一个文字字符串。所以我们需要在这里做一些修改。第一种方法是将
'
更改为"
:但是,现在我们需要在内部逸出
"
:另外,如果像上面那样将变量直接追加到字符串中(
$i
到i=
),我们需要用花括号将其括起来:这会让你得到你想要的行为。
f87krz0w2#
延伸至Matts回答:对于多行sh脚本,请使用
而不是
sy5wg1nm3#
请尝试以下操作:
waxmsbnn4#
对于多行,这也应该起作用: