Un script bash peut-il exécuter des commandes simultanées puis attendre leur achèvement?

Je veux écrire un script bash où j'exécute deux commandes simultanément, puis continue quand elles se terminent toutes les deux.

Voici quelque chose qui ne fonctionne pas, mais je vais le mettre ici pour illustrer ce que j'essaie de faire:

#!/bin/bash
./job1 &
./job2
./dostuffwithresults

Le script exécutera job1 et job2 en même temps, mais n'attendra que la fin de job2 avant de continuer. Si job1 prend plus de temps, les résultats peuvent ne pas être prêts pour la commande finale.

24
demandé sur Colin 2012-01-25 00:28:48

2 réponses

j1 &
j2 &
j3 &
wait $(jobs -p)
dostuffwithresults
40
répondu Michael Krelin - hacker 2012-01-24 20:31:30

Quelque chose comme ça devrait fonctionner

    #!/bin/bash
    while [ `pgrep job*` ]
    do 
    echo 'waiting'
    done

    ./dostuffwithresults
1
répondu hforbess 2012-01-24 20:40:10