curlの404のときのステータスコード

curlコマンドでURLにアクセスしたとき、404 Not Foundの場合は終了ステータスコードが0になる。

$ curl https://example.com/notfound
・・・
$ echo $?
0

404のときに0以外のステータスコードを返す

curlコマンドで404 Not Foundの場合に0以外のステータスコードを返すには、-fオプション(--failオプション)を指定する。

$ curl -f https://example.com/notfound
curl: (22) The requested URL returned error: 404 Not Found
$ echo $?
22

-fオプション(--failオプション)は正確にはエラー時にHTMLを表示せずに素早く終了するオプション。
-fオプションを指定すると、curlコマンドが404 Not Foundを返すときに終了ステータスコードが22になる。

この性質をつかってシェルスクリプトで取得できたかどうかを確認しつつ処理を分岐させられる。

RESULT=$(curl -f https://xxxx.com/xxxx)
if [ $? -eq 0 ]; then
  # 取得できたときの処理
else
  echo "Not Found"
fi