bash-скрипт cURL POST добавляет одинарные кавычки к переменным с пробелами

Первые 3 переменные всегда не содержат пробелов. Четвертый "slacksitename" содержит пробелы

ip=“x.x.x.x"
record_name=“demo.xyz"
slackuri:”WEBHOOK"
slacksitename:”123 Main St"

При вызове с помощью cURL

curl -X POST -H 'Content-type: application/json' --data '{"text":"’$slacksitename': '$ip' '$record_name' DDNS updated.”}’ $slackuri

Вывод выглядит следующим образом:

curl -X POST -H 'Content-type: application/json' --data '{"text":"123' Main 'St: x.x.x.x demo.xyz DDNS updated."}' https://hooks.slack.com/services/……..
curl: (6) Could not resolve host: Main
curl: (3) unmatched close brace/bracket in URL position 59:
St: x.x.x.x demo.xyz DDNS updated."

Кто-нибудь знает, почему он добавляет одинарные кавычки к 123' Main 'St? И как мне добиться, чтобы вся переменная рассматривалась как одна строка, а не разбивалась на части (, что, как я думаю, и происходит )?

Спасибо

ОБНОВЛЕНИЕ:Решено^^

Продолжение:

Это, вероятно, совпадает с исходным вопросом:

У меня есть переменная, которая представляет собой вывод JSON, который я хочу отправить через CURL. Я предполагаю, что проблема снова в кавычках, но вывод JSON может измениться (Количество кавычек). Есть ли способ отправить эти необработанные данные с помощью cURL в сообщении с новой строкой? Спасибо

DUMPING RESULTS:\n{"result":{"id":"ppbkbz2ezmxen11vvpi65chsro1vki5y","zone_id":"unuM0sR1gSrQ37r9fGC1sYKFZOP0DzJM","zone_name":"demo.xyz","name":"1.demo.xyz","type":"A","content":"x.x.x.x","proxiable":true,"proxied":false,"ttl":1,"locked":false,"meta":{"auto_added":false,"managed_by_apps":false,"managed_by_argo_tunnel":false,"source":"primary"},"created_on":"2020-06-14T19:13:57.096688Z","modified_on":"2021-10-16T16:57:49.269274Z"},"success":true,"errors":[],"messages":[]}."
0
задан 16 September 2021 в 06:39
1 ответ

Вы используете переменные без кавычек в bash и выглядите удивленным тем, что происходит разделение слов. Это то, что должно произойти.

В вашем вопросе также есть нестандартные кавычки, которые, как я предполагаю, вызваны автоматическим форматированием. Но учтите, что "не совпадает с "и 'не совпадает с ʼ.

curl -X POST -H 'Тип содержимого: application/json' --data '{"text":"'$slacksitename': '$ip' '$record_name' DDNS обновлено."}' $slackuri

В вашей командной строке, вы заключаете в кавычки {"text":"и добавляете к нему содержимое $slacksitenameбез кавычек, что означает, что в нем будет происходить разделение слов. Конечным результатом будет 3 отдельных аргументы: {"текст":"123, Основной, Ст. Третий аргумент будет объединен с : , который сам будет объединен с содержимым $ipбез кавычек, так что мы любые пробелы, присутствующие в этой переменной, произойдет то же самое.

По сути, это bash 101, указывайте ваши переменные, если вы не знаете, что делаете.

1
ответ дан 16 September 2021 в 07:25

Теги

Похожие вопросы