Jenkins 管道、sh、引号和空格

Jenkins 管道、sh、引号和空格

我正在尝试将sh命令设置为 Jenkins 管道的一部分。该命令有一个参数,其中提供了值列表。这些值中有空格。

我已经尝试了很多东西,数组,转义等等,但都没有成功。

这是一个例子:

# In Jenkins task I configure env variable:
VALUE_LIST=("Value One" "Value Two" "Value Three")

# In pipeline:
...
sh "command --param ${env.VALUE_LIST[@]}"
...

请理解,这只是我尝试实现这项工作的方法之一。

我需要结果命令如下:

command --param "Value One" "Value Two" "Value Three"

我能达到的最好成绩是

command --param Value One Value Two Value Three

这显然不起作用

答案1

这应该有效。

printf "%s\0" "${VALUE_LIST[@]}" | xargs -0  sh -c 'command --param "$@"' command_name

打印值xargs并使用 null 作为分隔符。然后以值作为参数xargs调用shsh执行命令。最后一部分command_name,将通过您提供的名称来表示命令。在此构造中这是强制性的,否则 command 将不会收到 list 中的第一个值"$@"

相关内容