0
我想創建一個for循環,我總是同時調用N
函數。他們不依賴於對方,我只是想要平行運行這個循環。bash等待循環中的後臺進程
我的想法是調用我的函數作爲後臺進程,並在每次進行第N次調用後,我想等待所有後臺進程。
但不知何故,它不會等待... 我敢肯定我錯過了一些明顯的東西。
#!/bin/bash
fun(){
for i in {1..5}
do
echo $i
sleep 1s
done
}
N=2
(
for k in {1..8}
do
((i=i%N))
# ((i++==0)) && (echo "waiting for all background processes" && wait) PROBLEM SOLVED:
((i++==0)) && echo "waiting for all background processes" && wait
echo "i = $i"
fun &
done
wait
)
編輯:它可能有一些做的一個子shell ...我不知道 EDIT2:是的,這是因爲(echo "waiting for all background processes" && wait)
在子shell執行......這就是問題