2017-02-17 102 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

相关问题