【curl】デバッグと制御のオプション

【curl】デバッグと制御のオプション

シェルスクリプトでcurlを利用する際、動作制御やデバッグに用いるオプションを書いていきます。

curl #curl#デバッグ

【curl】デバッグと制御のオプション

サムネイル

シェルスクリプトでcurlを利用する際、動作制御やデバッグに用いるオプションを書いていきます。

更新日: 7/26/2025

通信内容のデバッグ

通信の全記録を出力する (--trace-ascii)

-vが表示するヘッダー情報に加え、送受信データ本体(body)も記録するには、「--trace-ascii」でファイルに出力します。

# 通信の全内容を trace.log ファイルに出力
curl --trace-ascii trace.log https://example.com

スクリプトで使う

HTTPステータスコードなどを取得する (-w)

スクリプトでHTTPステータスコードなどを変数に格納するには、「-w」で出力形式を指定します。-s-o /dev/nullを併用し、bodyは破棄するのが一般的です。

# HTTPステータスコードを変数に格納
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://example.com)

if [ "$status_code" -eq 200 ]; then
  echo "Status is 200"
fi

HTTPエラーで異常終了させる

デフォルトでは、404などのHTTPエラーでもcurlの終了コードは0です。「-f」を指定すると、サーバーエラー時に終了コードが200以外(22)となり、スクリプトのif文などでエラーを検知できます。

# 404エラー時にelseブロックが実行される
if curl -f -s https://example.com/non-existent-page; then
  : # Success
else
  echo "curl command failed with exit code $?"
fi

失敗時に再試行する

リクエストが失敗した際、「--retry」で指定回数だけ再試行させます。「--retry-delay」で再試行までの待機秒数を指定できます。

# 失敗した場合、5秒待ってから最大3回再試行
curl --retry 3 --retry-delay 5 https://example.com

検索

検索条件に一致する記事が見つかりませんでした