2017-07-16 130 views
0

我的腳本是這樣的命令行從python腳本執行的shell腳本參數

./pro.sh "Argument1" 

我從我的Python腳本調用它目前這樣

subprocess.call(shlex.split('bash pro.sh "Argument1"')) 

如何執行我是否將Argument1的值作爲變量傳遞?我對腳本的參數可以是任何字符串。我如何實現這一目標?

回答

1

您可以使用

subprocess.Popen(["bash", "pro.sh", "Argument1"]) 

如果字符串參數是多個單詞,它應該工作的罰款。

subprocess.Popen(["bash", "pro.sh", "Argument with multiple words"]) 

只要多個單詞是在傳遞到subprocess.Popen()列表中的一個字符串,它被認爲是在該命令的參數列表一個參數。

除非您有充分的理由,否則不應使用shell=True。如果您不太注意它的使用方式,可能會造成安全問題。

1

使用子打電話給你的shell腳本

subprocess.Popen(['run.sh %s %s' % (var1, var2)], shell = True) 
+0

我的參數是一串多個單詞。當我使用這個時,只有字符串的第一個字被使用。 – RJP

+0

U必須將字符串存儲在變量var1,var2中,然後執行腳本 – bigbounty

+0

我已經這樣做了。它只讀取var1的第一個單詞。 var 1包含多個單詞 – RJP