python - 这是在 Python 中运行 shell 脚本的正确方法吗?

import subprocess
retcode = subprocess.call(["/home/myuser/go.sh", "abc.txt", "xyz.txt"])

当我运行这两行时,我会这样做吗?:

/home/myuser/go.sh abc.txt xyz.txt

为什么会出现此错误?但是当我正常运行 go.sh 时,我没有收到该错误。

File "/usr/lib/python2.6/subprocess.py", line 480, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child
    raise child_exception
OSError: [Errno 8] Exec format error

最佳答案

OSError: [Errno 8] Exec format error

这是操作系统在尝试运行 /home/myuser/go.sh 时报告的错误。

在我看来,go.sh 的 shebang (#!) 行无效。

这是一个从 shell 而非 Popen 运行的示例脚本:

#\!/bin/sh
echo "You've just called $0 $@."

从第一行删除 \ 可以解决问题。

https://stackoverflow.com/questions/4834483/

相关文章:

c - 格式化结构时间规范

linux - 如何获取 linux 实用程序 tail 的源代码?

python - 如何使用 Python 获取硬盘序列号

c - gcc 调试符号(-g 标志)与链接器的 -rdynamic 选项

linux - 在 Docker 容器中挂载 SMB/CIFS 共享

linux - 是否可以让vim显示行号?

linux - 列出包含字符串但 *NOT* 包含另一个字符串的文件的 Unix 命令

linux - 在脚本内使用没有密码的 sudo

c - 交叉编译时如何使用外部库?

c - 如何创建新的 Linux 内核调度程序