【问题标题】:Unable to expand a variable used in cURL command [duplicate]无法扩展 cURL 命令中使用的变量 [重复]
【发布时间】:2019-02-15 15:09:28
【问题描述】:


我需要在 cURL 命令中使用一个变量。该变量需要放在 cURL 使用的 JSON 字符串中。问题是,当在 JSON 字符串中使用时,变量并没有扩展到它的值:

export line="job1"

curl -k -X POST https://jenkinsserver \
--data-urlencode json='{"parameter": [{"name":"jenkins.job.name", "value":"$line"}]}'

我也尝试过使用:

"${line}"

但这没有帮助。它传递的不是变量的值,而是“$line”。 知道如何解决吗?

【问题讨论】:

  • 不要使用shell插值生成JSON;使用jq之类的工具。

标签: shell


【解决方案1】:

我知道某处有此副本,但我找不到。

无论line 的值是多少,都可以使用jq 之类的工具安全地生成您的JSON。

d=$(jq -n --arg x "$line" '{parameter: [{name: "jenkins.job.name", "value": $x}]}'

curl -k -X POST https://jenkinsserver --data-urlencode json="$d"

【讨论】:

    【解决方案2】:

    你可以试试"'"$line"'"看看是否有效

    【讨论】:

    • 谢谢,成功了!
    • 如果 $line 包含任何需要转义以获得正确 JSON 的字符,则会失败。
    猜你喜欢
    • 2019-08-27
    • 2011-05-08
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2014-01-28
    • 2023-03-30
    相关资源
    最近更新 更多