我正在写一个shell脚本来触发一些POST curl请求。我得到400当我使用下面的shell脚本。
#!/bin/sh
ENDPOINT="https://example.com:443/v1/API_NAME"
BODY='{"key1": "value1", "key2": "value2"}'
curl -H "Content-Type: application/json" -v -k -X POST $ENDPOINT -d $BODY
但是当我使用body内联时,它工作得很好,如下所示:
curl -H "Content-Type: application/json" -v -k -X POST $ENDPOINT -d '{"key1": "value1", "key2": "value2"}'
在终端上看到的两个请求之间的日志差异是Content-Length。不知何故,对于第一个curl请求,Content-Length是1,我认为这是失败的原因。谁能告诉我为什么内容长度是1,如何解决这个问题?
1条答案
按热度按时间g0czyy6m1#
多加引号!
使用
-d
交换机时不需要-X POST
学习如何在shell中正确引用,这非常重要:
“双引号”每个包含空格/元字符和 every 扩展的文字:
"$var"
、"$(command "$var")"
、"${array[@]}"
、"a & b"
。使用'single quotes'
作为代码或文字$'s: 'Costs $5 US'
,ssh host 'echo "$HOSTNAME"'
。看到http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
https://web.archive.org/web/20230224010517/https://wiki.bash-hackers.org/syntax/words
when-is-double-quoting-necessary