我编写了一个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的输出是'John'。我无法在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
以上两行给我的输出为约翰,但是当它卷曲时,它不起作用。造成这种情况的原因是什么?如何解决?
提前谢谢
答案 0 :(得分: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 }] }')"