【发布时间】:2019-07-29 08:31:00
【问题描述】:
我想使用从 bash 函数返回值重定向到例如grep,然后从 python 调用它。
即使我在子进程中使用shell=True,这似乎也不起作用。
适用于 bash 的示例:
grep foo <(echo "fooline")
在 python 3.7.3、Ubuntu 19.04 中给出错误 /bin/sh: 1: Syntax error: "(" unexpected 的示例:
#!/usr/bin/env python3
import subprocess
subprocess.call('grep foo <(echo "fooline")', shell=True)
根据these 之类的答案,重定向应该与 shell=True 一起使用(它适用于重定向实际文件,但不是返回值)。
编辑: 添加了shebang和python版本。
【问题讨论】:
-
最好为此类所有不一致的问题提供良好的文档,以便人们能够从 bash 脚本迁移到 python 脚本,而不会出现太多不可预测的行为。
-
echo "fooline" | grep foo? -
你的例子对我有用。你运行的 python 版本是什么?
-
似乎你缺少 python shebang 你的 python 脚本被解释为 shell
-
我正在运行 python 3.7.3 @PiotrKamoda
标签: python bash subprocess