Troubleshooting of curl errors in Mandarin: Difference between revisions

Jump to navigation Jump to search
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 解釋問題並保持可讀的格式。


=== 如何隱藏進度條 ===
=== 如何隱藏進度條 ===

Navigation menu