我有一个简单的bash脚本运行“apt update”我试图像这样通过python调用它。它运行虽然我没有chmod +x update.sh
它。
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
答案 0 :(得分:3)
你不执行update.sh
。您执行sh
传递update.sh
作为参数。这使得sh
将update.sh
解释为shell脚本。
顺便提一下,请注意sh
与bash
不完全相同。
答案 1 :(得分:1)
这与python foo.py
运行foo.py
的方式完全相同,后者不会被标记为可执行文件 - 它只是一个包含脚本文本的数据文件,并且执行的事情分别是python
或sh
。