【发布时间】:2018-02-15 18:02:49
【问题描述】:
我正在运行一个 bash 脚本,该脚本由 python 中的许多其他命令组成
mybash.sh:
#!/bin/bash
var=10
echo variable is equal to $var
在 python 中运行.sh
if echo variable is equal to $var == echo variable is equal to 10:
print ('variable is 10')
我尝试这样做:
process = Popen('sh mybash.sh', shell=True, stdout=PIPE, stdin=PIPE)
我试图在 bash 脚本中获取每个命令的 args 值,但 process.args 只返回 sh mybash.sh。如何在执行时逐行返回脚本内每个命令的 args 值?
【问题讨论】:
-
args 是什么意思?参数是您放入函数/脚本的内容。如果你想取出一些东西,你必须
echo.sh脚本中的每个参数并阅读标准输出。 -
是否有必要将此 bash 脚本包装在 python 脚本中?你可以只使用其中一个然后调试它。
-
这里不需要
shell=True;Popen(['sh', 'mybash.sh'], ...) -
mybash.sh实际上是一个黑盒子;除了自己解析文件之外,您无法获得有关其中发生的任何信息。 -
实际上,我想在运行时过滤 bash 脚本中的一些命令。所以,这就是为什么我首先在 python 中运行 bash 脚本来控制这些命令!
标签: python bash subprocess popen