ネットワークが存在しない場合、カールは直ちに終了します。

ネットワークが存在しない場合、カールは直ちに終了します。

githubでapiを受けたいです。

コードは次のとおりです。

array=(link1 link2 link3 link4)
readarray -t item < <(for i in ${array[@]}
      do curl -s "$i" | jq '.tag_name'
      done)

それから私から行くことができます。もの

しかし、問題は、インポートするリンクが残っていると、カールがそこで停止することです。

すぐに終了し、古いデータの代わりに「エラー」などのテキストを印刷するか、終了コードを取得してエラーが発生した場合にいくつかのロジックを実装できるようにする必要があります。

これに効果的なソリューションを提供します。

ベストアンサー1

1回の呼び出しですべてのURLを読み取ることができ、転送エラーが最初に検出されたらすぐに終了するcurlオプションを使用できます。--fail-early接続時間を制限するには、--max-timex秒後に各転送中断を追加してください。--connect-timeout

エラーがある場合は、アイテムの配列が空であることを確認できます。

urls=(link1 link2 link3 link4)
readarray -t item < <(
    curl -s --fail-early --connect-timeout 10 --max-time 120 "${urls[@]}" |
    jq '.tag_name')

if [ "${#item[@]}" -eq 0 ]; then
    echo "Uh, failed to fetch data." >&2
    exit 1
fi

おすすめ記事