2014-02-23 34 views
1

所以說我有這樣的:運行子shell,直到所有的人都在bash完成

#!/bin/bash 
testfunc(){ 
    echo "blah" 
    sleep 30 
} 

for blah in blahs; do 
    testfunc & 
done 

wait 

的劇本我已經呼籲了一堆我在BG功能,並等待他們都沒有完成問題......但我需要做的是有另一個函數,從我的腳本的開始處開始,直到我等待之後才運行,然後結束。

#!/bin/bash 
testfunc(){ 
    echo "blah" 
    sleep 30 
} 

gatherloadavg(){ 
while true; do 
    echo "my load averages and other performance data I want" >> blah.txt 
done 
} 

gatherloadavg & 
for blah in blahs; do 
    testfunc & 
done 

wait 

回答

2

wait需要一個可選的PID列表來等待。所以你應該可以這樣做:

gatherloadavg & 
statspid=$! 

for blah in blahs; do 
    testfunc & 
    pidlist="$pidlist $!" 
done 

wait $pidlist 

kill $statspid 
+0

謝謝,不知道等一下可以拿個清單。這正是我所需要的。 – cashman04

相關問題