2013-09-24 62 views
1

如何將控件返回到父進程的bash腳本中,當您在子進程中時?控制子進程製作

#/bin/bash 
global_i=0 
global_j=0 
while((i<100)) 
do 
    (
    while((j<100)) 
    do 
     mkdir "shiv$i$j" 
     let j=j+1 
    done 
    ) 
    echo shiv 
    let i=i+1 
done 

每一件事工作正常,但echo命令沒有運行,這意味着控制不回來的父進程。而且,只有兩個進程的PID:一個是父進程等是子進程...但我想要100個子進程。

在C語言中,我們可以使用fork函數輕鬆完成 - 如何在bash腳本中執行此操作?

+0

你打算同時運行100個進程?這是一個相當危險的任務,而不是IO友好。此外,它似乎實際上是你試圖運行100 * 100任務。 – konsolebox

+2

我認爲OP希望第二個while循環處於另一個進程中。到OP:就像在第二個while循環的末尾添加'&一樣簡單:'(while((j <100))...)&'這是創建子進程的符號符號,而不是括號。 – justhalf

回答

0

我只是忘了輸入&這使得子進程

的代碼應該是

#/bin/bash 
global_i=0 
global_j=0 
while((i<100)) 
do 
(
while((j<100)) 
do 
mkdir "shiv$i$j" 
let j=j+1 
done 
)& 
echo shiv 
let i=i+1 
done 
+1

順便說一句,我只是編輯..backquotes什麼都不做,只是在終端上運行代碼,並取代輸出..因此它是mkdir,所以它不會造成任何傷害 –