2016-02-29 89 views
0

我對shell腳本很陌生。 我必須使用Python執行shell腳本。 shell腳本的順序很重要。 這是我的例子Python代碼在Python中的一個進程下運行shell腳本

import subprocess 
import os 

script1= "scripts/script1.sh" 
script2 = "scripts/script2.sh" 
script3 = "scripts/script3.sh" 

subprocess.call([script1]) 
subprocess.call([script2]) 
subprocess.call([script3]) 

問題是與上面的代碼中所有的腳本單獨執行一個接一個,但我想所有的下一個進程中運行。

例如,script2和script3應該在腳本運行時執行。

+1

「一個進程下」是指「在另一個腳本運行時執行」?這些看起來完全矛盾。如果你想同時運行它們,你如何保持秩序? –

+0

@丹尼爾羅斯曼是由「在一個進程下」我的意思是「腳本2和腳本3在腳本1運行時運行」。實際上,在我的實現中,script1打開一個調試程序的GUI,並且該程序正在等待一些由script2執行的命令。 – user3159610

+0

你應該澄清你的問題。一個shell腳本總是一個獨立的進程。通過在後臺運行一些進程(這是一個交互式shell概念 - 基本上意思是fork,不用等),或者通過使用管道,您可以運行多個併發進程。 'subprocess.call()'等待一個進程完成,但是底層的'Popen'將會像你喜歡的那樣啓動儘可能多的進程而不用等待,除非你明確地要求它。 – tripleee

回答

0

儘管OP顯然拒絕澄清他的問題,但他留下了一條評論,表示他正在尋找subprocess.Popen()

procs = [] 
for cmd in ['scripts/script1.sh', 'scripts/script2.sh', 'scripts/script3.sh']: 
    procs.append(subprocess.Popen([cmd])) 

您應該最終爲您開始的流程wait