2017-02-17 99 views
0

我有一個簡單的運行「apt更新」的bash腳本我試圖通過Python這樣調用它。它運行雖然我沒有chmod +x update.sh它。python如何讓bash腳本在不可執行的情況下運行?

def updateUsingBash(self): 
    p = QtCore.QProcess() 
    p.finished.connect(self.onFinished) 
    p.start('sh', ['update.sh']) 
    p.waitForFinished(-1) 

def onFinished(self, exit_code, exit_status): 
    print "script finished with exit code :", exit_code 
+2

'sh update.sh'告訴'sh'讀取'update.sh'作爲包含要運行的文本的數據文件。沒有Python在任何地方參與都是如此。 –

+2

這與'python foo.py'運行'foo.py'的方式是一樣的,而且它也不可執行。 –

+0

你沒有執行'update.sh'。你正在執行'sh'。 – user2357112

回答

3

你做了不是執行update.sh。你執行sh作爲參數傳遞它update.sh。這使得shupdate.sh解釋爲shell腳本。

順便提一句,請注意shbash不完全相同。

1

這是完全一樣的python foo.py運行foo.py,而後者不是標示可以執行的怎麼樣 - 它只是包含腳本文本數據文件,以及事情是執行分別是要麼pythonsh

相關問題