簡體   English   中英

cURL:將標准輸入作為數據發送時無效的 JSON

[英]cURL: Invalid JSON when sending stdin as data

我可以通過 cURL 使用以下命令控制飛利浦 Hue 燈:

curl -X PUT --data '{"on":true}' "http://<bridgeip>/api/<key>/lights/7/state";

我正在使用函數生成有效負載,因此我想將其通過管道傳輸到 cURL(以從 stdin 獲取其輸入):

onString='{"on":true}';
echo "$onString" | curl -X PUT --data - "http://<bridgeip>/api/<key>/lights/7/state";

但這會引發錯誤:“正文包含無效的 json”

我不明白的是這有效:

onString='{"on":true}';
curl -X PUT --data "$onString" "http://<bridgeip>/api/<key>/lights/7/state";

誰能解釋一下?

(順便說一句,當我將函數的輸出通過管道傳輸到cat ,結果字符串符合預期,並且當復制並粘貼到 jsonlint 中時,會檢查出有效的 JSON。)

--data -不從標准輸入中獲取數據,它只是發送一個文字-

要實際從標准輸入中獲取數據,請使用--data @-

(仔細想想,-- --data-binary @-可能是一個更好的主意,我認為在 Windows 上運行時換行會有所不同,但我不是 100% 確定)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM