Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 参数为变量的卷曲柱不工作_Shell_Variables_Curl_Jenkins - Fatal编程技术网

Shell 参数为变量的卷曲柱不工作

Shell 参数为变量的卷曲柱不工作,shell,variables,curl,jenkins,Shell,Variables,Curl,Jenkins,我已经编写了一个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 \

我已经编写了一个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 job中看到时,参数值如下:

$val3,val3,${val3}

它是按原样接受,而不是替换值

printf "%s\n" "${val3[0]}"
echo $val3
上面的两行以John的身份提供了输出,但是当将其放入curl时,它不起作用。这是什么原因造成的?如何修复


提前感谢

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

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 }] }')"

谢谢你,汤姆。我尝试了单引号和双引号,但都不起作用。您需要在字符串外部使用双引号,然后在字符串内部转义双引号。我假设变量本身不包含任何双引号。当我在外部使用双引号时,它给出了错误:error处理您的请求时出错。请您的Jenkins管理员查看详细信息。ErrorID=864a6488-2aef-4804-b001-55aefd4910b0被抑制堆栈跟踪插件抑制的跟踪我认为它与外部singlr quote一起工作良好。我在这里为詹金斯推荐了这篇文章,非常感谢!!这是在修改您提到的赋值语句并放入斜杠后工作的。谢谢