前 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
?以及我如何将整个变量视为一个字符串而不是拆分它(这就是我认为它正在做的事情)?
谢谢
更新:已解决^^
跟进:
这可能与原始问题的思路相同:
我有一个变量,它是我想通过 cURL 发送的 JSON 输出。我假设问题再次是引号,但 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":[]}."
您在 bash 中使用未引用的变量,并且对发生分词感到惊讶。这是应该发生的事情。
您的问题中还有非标准引号,我认为这是因为自动格式化。但请注意,
"
与 不一样”
,'
也不一样ʼ
。curl -X POST -H 'Content-type: application/json' --data '{"text":"’$slacksitename': '$ip' '$record_name' DDNS updated.”}’ $slackuri
在您的命令行中,您正在引用
{"text":"
并附加未引用的内容$slacksitename
,这意味着将在其上进行分词。最终结果将是 3 个单独的参数:{"text":"123
,Main
,St
. 第三个参数将被连接,:
它本身将与未引用的内容连接,$ip
因此我们是该变量中存在的任何空格,同样会发生。这本质上是 bash 101,除非您知道自己在做什么,否则请引用您的变量。
我能找到的唯一解决方法是将 json 保存到文件中,然后在 curl 调用 -d "@" 中引用它