14,974
edits
No edit summary |
|||
| Line 236: | Line 236: | ||
dquote> | dquote> | ||
</pre> | </pre> | ||
=== 如何解決 zsh Event Not Found 錯誤 === | |||
在 zsh shell 中執行包含 JSON 資料的 cURL 命令時,你可能會遇到以下錯誤訊息: | |||
<pre> | |||
> zsh: event not found: \ | |||
</pre> | |||
這是因為 zsh 將驚嘆號 (!) 解釋為歷史展開字元,即使它出現在雙引號內也是如此。 | |||
要解決此錯誤,可以使用以下任一方法: | |||
'''方法 1:對 JSON 資料使用單引號''' | |||
{{kbd | key=<nowiki>-d '{"message": "Hello '\''world'\'' & welcome!", "price": "$19.99"}'</nowiki>}} | |||
'''方法 2:跳脫驚嘆號''' | |||
{{kbd | key=<nowiki>-d "{\"message\": \"Hello 'world' & welcome\!\", \"price\": \"\$19.99\"}"</nowiki>}} | |||
'''方法 3:使用 heredoc 搭配 stdin''' | |||
{{kbd | key=<nowiki>-d @- << 'EOF'</nowiki>}} | |||
'''方法 4:將 JSON 儲存到檔案並引用''' | |||
{{kbd | key=<nowiki>-d @payload.json</nowiki>}} | |||
'''方法 5:暫時停用歷史展開功能'''<ref>[https://www.reddit.com/r/bash/comments/cl54to/not_sure_why_mac_is_saying_bash_event_not_found/?show=original not sure why mac is saying `-bash: !": event not found` when I try to simply echo a string containing a "!" : r/bash]</ref> | |||
{{kbd | key=<nowiki>set +H</nowiki>}} (在命令之前執行) | |||
修正語法的範例: | |||
使用單引號: | |||
<pre> | |||
curl -X POST \ | |||
-H "Content-Type: application/json" \ | |||
-d '{"message": "Hello '\''world'\'' & welcome!", "price": "$19.99"}' \ | |||
-v \ | |||
https://example.com/api/ | |||
</pre> | |||
使用 heredoc(建議用於複雜的 JSON): | |||
<pre> | |||
curl -X POST \ | |||
-H "Content-Type: application/json" \ | |||
-d @- \ | |||
-v \ | |||
https://example.com/api/ << 'EOF' | |||
{ | |||
"message": "Hello 'world' & welcome!", | |||
"price": "$19.99", | |||
"special_chars": "!@#$%^&*()_+{}|:<>?[]\\;'\",./" | |||
} | |||
EOF | |||
</pre> | |||
使用外部 JSON 檔案: | |||
<pre> | |||
curl -X POST \ | |||
-H "Content-Type: application/json" \ | |||
-d @payload.json \ | |||
-v \ | |||
https://example.com/api/ | |||
</pre> | |||
注意:建議使用 heredoc 方法來處理複雜的 JSON,因為它可以避免所有 shell 解釋問題並保持可讀的格式。 | |||
=== 如何隱藏進度條 === | === 如何隱藏進度條 === | ||