Невозможно использовать переменную внутри curl - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть файл 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 голосов
/ 02 ноября 2018

переменные не работают в одинарных кавычках.

Внутри одинарных кавычек все сохраняется буквально, без исключения.

Это хорошо объяснено здесь

Попробуйте двойные кавычки, как вы использовали это в строке до

0 голосов
/ 02 ноября 2018

Это просто

curl ... -d "json=$JSON"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...