2012-01-24 10 views
20

Chcę napisać skrypt basha, w którym jednocześnie uruchomię dwa polecenia, a następnie kontynuuję, gdy oba zostaną zakończone.Czy skrypt bash może uruchamiać jednoczesne polecenia, a następnie czekać na ich zakończenie?

Oto coś, co nie działa, ale będę go umieścić tutaj, aby zilustrować to, co usiłuję zrobić:

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

Skrypt zostanie uruchomiony zarówno Zadanie1 i Job2 w tym samym czasie, ale będzie tylko czekać na zakończenie zadania 2, zanim przejdzie dalej. Jeśli zadanie 1 trwa dłużej, wyniki mogą nie być gotowe do wykonania końcowego polecenia.

Odpowiedz

33
j1 & 
j2 & 
j3 & 
wait $(jobs -p) 
dostuffwithresults 
+6

+1, ale argument czekać nie jest konieczne w tym przypadku jest to ustawienie domyślne. –

+0

@JohanLundberg, w istocie, nie miałem pojęcia ;-) –

+1

Powodem dodania argumentu do oczekiwania jest, jeśli chcesz odebrać status ze zleceń. Niestety, zwraca tylko status ostatniego procesu na liście, więc musiałby iterować, aby sprawdzić/zebrać cały status " – libjack

1

coś jak to powinno działać

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

    ./dostuffwithresults 
Powiązane problemy