Leggi la risposta del corpo HTTP e ripeti il risultato con Bash
Sono piuttosto debole con bash quindi sii paziente con me.
Devo impostare uno script bash che faccia queste cose:
- Avvia una richiesta di curl a un URL come:
curl https://example.com/my_first_request
Questa richiesta restituisce una semplice risposta con un valore per riga come:
300
320
350
500
Devo leggere tutti questi valori e quindi eseguire una richiesta di arricciatura per ciascuna riga come questa:
curl https://example.com/my_second_request/300
curl https://example.com/my_second_request/320
curl https://example.com/my_second_request/350
curl https://example.com/my_second_request/500
Non mi interessa se quelle richieste sono asincrone o sincronizzate, questo script può richiedere tutto il tempo necessario.
Ho provato più volte con alcune risposte su stackoverflow e alcuni tutorial, ma ogni volta che fallisco. Qualcuno può aiutarmi con questo compito?
Grazie.
Risposte
Puoi provare xargsanche con , che è in grado di eseguire un numero specificato di comandi in sottoprocessi. Un breve liner assomiglia a:
curl "https://example.com/my_first_request" | xargs -n1 -P2 -I % curl "https://example.com/my_second_request/%"
L'uso di -n1indica xargsper elaborare un singolo argomento di input alla volta. In questo caso, i codici di risposta ( 300, 320, 350, 500, ...) ottenuti dal primo endpoint vengono elaborati separatamente. E gli -P2indizi xargsper mantenere i 2sottoprocessi sempre in esecuzione, ognuno gestisce un singolo argomento, fino a quando tutti gli argomenti di input non vengono elaborati.
Puoi usare la sostituzione del comando bash:
for code in $(curl https://example.com/my_first_request); do curl https://example.com/my_second_request/$code
done