【发布时间】:2017-05-16 10:46:37
【问题描述】:
我编写了一个 shell 脚本,它使用 curl 命令来构建一个带有参数的 Jenkins 作业。以下是代码。
#!/bin/bash
val3=( $(cut -d ',' -f3 csvfile.csv) )
printf "%s\n" "${val3[0]}"
echo $val3
curl -X POST https://my-jenkins.abc.com/inst/job/Aut/job/pipe-workflow/job/Job3/build \
--user user:token \
--data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3}"}]}'
我正在读取一个名为“csvfile.csv”的文件,并在 curl 命令中传递 $val3 的值。 $val3 的输出是“约翰”。我无法在 curl 中替换 $val3 的值。它把它当作文学作品。我也尝试过关注,但都没有帮助。
--data-urlencode json='{"parameter": [{"name":"valA", "value":"$val3"}]}'
--data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3[0]}"}]}'
--data-urlencode json='{"parameter": [{"name":"valA", "value":"val3"}]}'
--data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3}"}]}'
--data-urlencode json="{"parameter": [{"name":"valA", "value":"${val3}"}]}"
以上都不起作用。最后一个是抛出错误。当我在 Jenkins 工作中看到时,参数的值如下:
$val3, val3, ${val3}
它是按原样而不是替换值。
printf "%s\n" "${val3[0]}"
echo $val3
上面两行给了我作为 John 的输出,但是当它处于 curl 状态时,它不起作用。这是什么原因造成的,我该如何解决?
提前谢谢你
【问题讨论】:
-
谢谢汤姆。单引号和双引号都试过了,还是不行
-
你需要在外面使用双引号,然后在字符串里面转义双引号。我假设变量本身不包含任何双引号。
-
当我在外面使用双引号时,它给出了错误:
Error 处理您的请求时发生错误。请让您的 Jenkins 管理员查找详细信息。 ErrorID=864a6488-2aef-4804-b001-55aefd4910b0
wiki.jenkins-ci.org/display/JENKINS/… 被抑制堆栈跟踪插件抑制的跟踪 singlr 在外面引用,我想。我从这里 wiki.jenkins-ci.org/display/JENKINS/Remote+access+API 推荐了 Jenkins 的帖子@
标签: shell variables curl jenkins