所以,我试图从Python运行一个Shell脚本,我仔细检查script.sh
的位置是否正确(因为当我从sublime运行它时,script.sh
打开)。我必须致电script.sh
:
subprocess.call("script.sh", shell=True)
当我运行它时,该函数返回0.但是,该脚本应该在我的文件夹中创建一个文件并写入它,它没有这样做。当我从cygwin命令提示符运行脚本时,它确实有效。
可能出现什么问题?
答案 0 :(得分:1)
请确保您已添加:
!/bin/bash
作为第一行,并确保文件script.sh具有可执行权限。
chmod u+x script.sh
然后尝试指定完整路径:
subprocess.call("/complete/path/script.sh", shell=True)
答案 1 :(得分:0)
在shell脚本的顶部,放置以下行:
pwd >/tmp/mytempfile
然后运行Python脚本并查看该文件。
这将让您找到脚本的工作目录,在大多数情况下,如果文件似乎没有创建,则与您认为应该存在的不同。
您可能还需要检查shell脚本,以确保在创建文件之前不会更改工作目录,但是如果您已经声明它可以正常工作,则不太可能从命令行。
如果添加该行来创建临时文件并且它实际上没有创建,那么您的脚本就不会执行。
在这种情况下,你可以尝试一些事情。 第一个是完全指定脚本,因为Python不在正确的目录中。换句话说,比如:
subprocess.call("/actual/path/to/script.sh", shell=True)
或者您可以尝试以脚本作为参数运行实际的bash
可执行文件:
subprocess.call("bash -c script.sh", shell=True)