gpt4 book ai didi

shell - 如何将变量从 Jenkinsfile 传递给 shell 命令

转载 作者:行者123 更新时间:2023-12-03 14:36:35 36 4
gpt4 key购买 nike

我想使用我在 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 scipt?

编辑:基于 Matt's回答,我现在使用这个解决方案:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "i=${i}; " + 'echo "from shell i=$i"'
}

优点是,我不需要逃避 "在 shell 脚本中。

最佳答案

您的代码使用的是文字字符串,因此您的 Jenkins 变量不会被插入到 shell 命令中。您需要使用 "sh 内的字符串中插入变量. '只会传递一个文字字符串。所以我们需要在这里做一些改变。

首先是更改'" :

for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo "from shell i=$i""
}

但是,现在我们需要逃避 "在里面:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo \"from shell i=$i\""
}

此外,如果像上面那样直接将变量附加到字符串( $ii= 上),我们需要用一些花括号将其关闭:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo \"from shell i=${i}\""
}

这会让你得到你想要的行为。

关于shell - 如何将变量从 Jenkinsfile 传递给 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539076/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com