2014-07-22 274 views
1

我對Python很陌生,試圖找到一種方法來設置幾個shell env變量,然後執行一個shell腳本。設置Env變量並從Python腳本運行Shell腳本

subprocess模塊能夠發送多個shell命令並捕獲輸出嗎?

這對我來說並不清楚,因爲每個spawn都會導致一個新的shell線程不會有以前的env變量。

此外,使用popencheck_output是否合適?

基本上我想要做的是:

$ setenv a b 
$ setenv c d 
$ setenv e f 
$ check_status.sh > log.log 
$ grep "pattern" log.log 

check_status.sh必須定義才能正常運行上面的ENV變量,它也必須是shell腳本(即我無法翻譯check_status.sh到蟒蛇)。

我會感謝您的意見和輸入。

+0

@favoretti還沒有嘗試過,只是想辦法。也沒有尋找代碼解決方案,只是你的想法問題陳述。 –

+0

@favoretti雖然[「與另一個命令交互」](http://pymotw.com/2/subprocess/)部分似乎很有趣。 –

+0

你見過這個嗎? http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python?請注意,它表示子進程自動繼承設置值,所以簡短答案是肯定的,這是可能的。 :) – favoretti

回答

0

subprocess每次都會創建一個線程。您可以使用popen來執行shell命令。使用分號作爲分隔符。如os.popen('setenv a b;set env c d')

希望它有幫助。

+0

謝謝你的回答,我會試一試,明天讓你知道。 –