Unengineered Weblog

PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND

curl でステータスコードだけを得る

ある URL からのレスポンスのステータスコードだけ知りたいときがある。404 かどうかだけわかればよいときだったり。

そういうときは curl--write-out / -w オプションが使える。このオプションには %{http_status} などの変数を含んだテンプレートを渡す。このオプションを指定して実行すると、レスポンスボディが出力したあとにテンプレートを展開した文字が出力される。

everything.curl.dev

たとえば、つぎのように使う。

curl -w 'status code: %{http_code}\n' example.com
<!doctype html>
<html>
... omitted
</html>
status code: 200

レスポンスボディのあとに -w に渡したテンプレート status code: %{http_code}\n が展開されたものが出力された。ステータスコードが 200 であることがわかった。

テンプレートに使える変数はいっぱいある。

everything.curl.dev

シェルスクリプトステータスコードを変数に入れるときは次のようにする。

code=$(curl -sSL -o /dev/null -w '%{http_code}' example.com)