2016-12-29 232 views
0

我想知道如何在同一時間運行太多循環。這有點像我的另一個問題,How to exit a Subshell。我試圖讓兩個循環同時運行,並讓它們能夠共享變量。我嘗試使用子shell(顯然失敗),嘗試背景第一個循環和運行第二個,這是行不通的。我還有什麼其他選擇?實現這一如何同時運行兩個循環

+1

[你想用這兩個循環完成什麼?](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – bishop

+0

我想要寫一個一個文件,另一個用Zenity顯示文件。看到鏈接的問題。 – Feldspar15523

+0

1.爲什麼他們必須同時運行? 2.你說過你嘗試過的方法不起作用,但沒有說出他們的做法是行不通的。 – Carcigenicate

回答

1

一種方法是把不同的腳本循環和獨立打電話給他們,如:

nohup /folder/myLoop1 > /dev/null 2>&1 & 
nohup /folder/myLoop2 > /dev/null 2>&1 & 

至於共享變量,這樣做將是該變量存儲在一個方式一個臨時文件,然後可以通過所有腳本訪問:

echo "$myVar" > /tmp/loopVarHolder 
myVar="$(cat /tmp/loopVarHolder)" 

最後,你可以殺了(如果你需要/想)一個循環(說)myLoop2myLoop1完成後,通過添加以下(或類似)在腳註的末尾:

killall myLoop2 > /dev/null 2>&1 

注:終端(不是腳本)使用nohup可容納的提示,並創建一個文件nohup.out的地方,如果調用它,當你不使用重定向如> /dev/null 2>&1