无法使用可变内部卷曲

时间:2018-11-02 14:17:49

标签: bash curl

我在变量中有一个JSON文件。

echo $JSON
{"name": "jkslave1", "nodeDescription": "This is a test agent", "numExecutors": "1", "remoteFS": "/root", "labelString": "jenkins", "mode": "NORMAL", "": ["hudson.slaves.JNLPLauncher", "hudson.slaves.RetentionStrategy$Always"], "launcher": {"stapler-class": "hudson.slaves.JNLPLauncher", "$class": "hudson.slaves.JNLPLauncher", "workDirSettings": {"disabled": false, "workDirPath": "", "internalDir": "remoting", "failIfWorkDirIsMissing": false}, "tunnel": "", "vmargs": ""}, "retentionStrategy": {"stapler-class": "hudson.slaves.RetentionStrategy$Always", "$class": "hudson.slaves.RetentionStrategy$Always"}, "nodeProperties": {"stapler-class-bag": "true"}, "type": "hudson.slaves.DumbSlave", "Jenkins-Crumb": "6af50cfe57d4685d84cc470f311fa559"}

我想像这样在curl命令中使用变量

curl -k -X POST "https://<JENKINS-URL>/computer/doCreateItem?name=jkslave1&type=hudson.slaves.DumbSlave" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Jenkins-Crumb: ${CRUMB}" \
-d 'json=${JSON}'

但是上面的实现给了我错误

Caused: javax.servlet.ServletException: Failed to parse JSON:${JSON}
at org.kohsuke.stapler.RequestImpl.getSubmittedForm(RequestImpl.java:1022)
at hudson.model.ComputerSet.doDoCreateItem(ComputerSet.java:296)

我也尝试了以下方法

-d 'json="${JSON}"'

还有

-d 'json=\"${JSON}\"'

但这似乎不起作用。

如何将JSON正文发送到另存为变量的curl命令中?

2 个答案:

答案 0 :(得分:1)

很简单

curl ... -d "json=$JSON"

答案 1 :(得分:1)

变量不能用单引号引起来。

单引号内的所有内容均按原样保留,无一例外。

这很好地解释了here

尝试用双引号在上一行中使用它