Eu quero buscar algumas APIs do github.
então este é o código
array=(link1 link2 link3 link4)
readarray -t item < <(for i in ${array[@]}
do curl -s "$i" | jq '.tag_name'
done)
e então posso buscar os dados do item .
Mas o problema é que, se houver alguns links restantes para buscar, o curl ficará preso lá.
Quero que ele saia imediatamente e, em vez dos dados anteriores, preciso imprimir algum texto como "erro" ou obter seu código de saída para que eu possa implementar alguma lógica em caso de falha.
fornecer uma solução eficiente para isso.
Você pode usar
curl -f
a opção para sair imediatamente se o código de resposta for maior ou igual a 400. Além disso, você pode adicionar a-w
opção de capturar o código de saída e-o
a opção de redirecionar a saída/dev/null
para evitar a impressão da resposta no console.Você pode ler todos os URLs com uma
curl
invocação e usar a opção--fail-early
para sair imediatamente no primeiro erro de transferência detectado. Adicione--max-time
para abortar cada transferência após x segundos e--connect-timeout
se desejar restringir o tempo de conexão.A matriz de itens estará vazia em caso de erro, você pode verificar isso.