【问题标题】:CURL Post with Variable as parameter not working以变​​量为参数的 CURL Post 不起作用
【发布时间】: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


【解决方案1】:

以下是我可以看到的一些问题:

val3=( $(cut -d ',' -f3 csvfile.csv) )

这会创建一个数组,所以你可能想要这样:

val3=$(cut -d ',' -f3 csvfile.csv)

那么你的变量应该像这样插入:

--data-urlencode json="{\"parameter\": [{\"name\": \"valA\", \"value\":\"$val3\"}]}"

您可能还想考虑使用 jq 之类的工具来生成 JSON:

json="$(jq -nc --arg v "$var3" '{ parameter: [{ name: "valA", value: $v }] }')"

【讨论】:

  • 非常感谢!!这是在修改您提到的赋值语句并加上斜杠之后工作的。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
相关资源
最近更新 更多