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-time
x秒後に各転送中断を追加してください。--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