Considerando o seguinte script:
if [[ -z "$DOWNLOAD_ONLY" || "$DOWNLOAD_ONLY" = *conditions* ]]; then
function get_condition {
curl -s "https://conditions.com" | jq '.included[].attributes | select(retracted)' | jq --arg item $2 '. + {item: $item}' > "$1_$2.json"
}
function conditions {
for item in `cat items.json | jq -r '.data[].id'`
do
get_condition $1 $item
done
jq -s '.' $1_*.json | jq 'reduce .[] as $item (retracted)' > "$1.json"
rm $1_*.json
}
curl "https://items.com" | jq '.' > "items.json"
for language in cs da de en es fr it nl pl pt sv zh
do
conditions $language &
done
wait
fi
Posso adicionar &
e get_condition $1 $item
ligar wait
depois?
Imagino que uma preocupação poderia ser que esperar em
b
esperaria por todos os processos iniciados do script de shell, levando a um deadlock. Isso não é um problema,wait
espera pelos filhos do (sub)shell atual; rodarb
em segundo plano força-o a ter seu próprio subshell, com sua própria lista de jobs e processos filhos.Então
funcionará bem nesse aspecto —
b
esperará pelosa
s que iniciou, e somente por eles.