curlコマンドでHTTPステータスコードだけを取得する場合は--write-outオプションを使うと良い

シェルスクリプトを書いているとcurlコマンドなんかで指定したURLのHTTPステータスコードだけがほしいという場合がある。

結論から言うと --write-out / -w というオプションを使うと実現できる

% curl -s -o /dev/null --write-out "%{http_code}" https://www.example.com/
200

-o /dev/null にしているのは取得内容を標準出力に表示しないようにするもので、こうすることで文字列として出力されるのはHTTPステータスコードだけになりパイプやシェルスクリプトで処理がしやすいなどのメリットがある。

--write-out で出力できる内容いろいろ

ところで --write-out とはなにか。こういうとき、脳死でGoogle検索すると上位にQiitaというウェブサイトがでてきてしまうのだが、原典をみるのが一番確実である。

curl が指定URLにアクセスしたときに取得する様々な情報を簡易的なテンプレート表現で出力させることができるコマンドで、HTTPステータスコードの %{http_code} 以外にも、アクセスのために必要な処理にかかった各種の時間なども出力させることができる。

curl のバージョンによっては使えないパラメータも多々あるので、手元のバージョンで使えるものを確認するには curl --manual--write-out の項を確認するとよい。