シェルスクリプトのカールからHTTPステータスコードとコンテンツを取得する

シェルスクリプトのカールからHTTPステータスコードとコンテンツを取得する

ファイルに変換し、状態コードを変数に入れる(または少なくとも状態コードをテストできるようにする)スクリプトが必要です。

たとえば、2回の呼び出しで行うことができます。

url=https://www.gitignore.io/api/nonexistentlanguage
x=$(curl -sI $url | grep HTTP | grep -oe '\d\d\d')
if [[ $x != 200  ]] ; then
  echo "$url SAID $x" ; return
fi
curl $url # etc ...

しかし、おそらく不要な追加呼び出しを避ける方法はありますか?

$?役に立ちません:ステータスコード404がまだリターンコード0を受信して​​います

ベストアンサー1

#!/bin/bash

URL="https://www.gitignore.io/api/nonexistentlanguage"

response=$(curl -s -w "%{http_code}" $URL)

http_code=$(tail -n1 <<< "$response")  # get the last line
content=$(sed '$ d' <<< "$response")   # get all but the last line which contains the status code

echo "$http_code"
echo "$content"

(一時ファイルなどの他の方法もあります--write-outが、私の例では、一時ファイルを書き込むためにディスクに触れる必要はなく、削除を覚えておく必要もありません。すべての操作がRAMで行われます。)

おすすめ記事