Menu
Coddy logo textTech

curlの終了コード

Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 30/47。

1つの curl コマンドには、まったく異なる2つの失敗の概念があり、これらを混同すると実際のバグにつながります。

ステータスコードはサーバーの応答です: 200、404、500。終了コードは、curl がそもそも通信を成立させられたかどうかを示します。

404 は通信自体が成功したことを意味します。サーバーには到達し、リクエストを理解して応答しました。curl は 0 で終了します。終了コードだけを確認するスクリプトは、これを問題ないものとして扱います。その結果、エラーページをダウンロードしているのに成功するパイプラインができてしまうのは、よくある問題です。

curl -s -o /dev/null http://127.0.0.1:9120/missing
echo $?     # 0、リクエスト自体は成功したため

不正なステータスで失敗させたい場合は、--fail を指定します。これにより、4xx および 5xx の場合に curl はゼロ以外の値で終了します。それ以外の場合は、%{http_code} を自分で確認してください。

challenge icon

チャレンジ

難しい

404でもリクエスト自体は成功していることを示します。

  1. ポート9120でフォルダーを配信します
  2. 存在しないページを要求し、ステータスコードとともにstatus=を出力します
  3. 次の行で、curlの終了コードとともにexit=を出力します

期待される出力:

status=404
exit=0

curlが終了コードを生成した直後に$?を読み取ります。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ターミナルで学ぶネットワークのすべてのレッスン

自分で練習してみよう: Terminalプレイグラウンド