Python 从子进程bash脚本获取输出

Python 从子进程bash脚本获取输出,python,python-3.x,bash,Python,Python 3.x,Bash,我有一个bash脚本,其中有这样一个函数 configure() { echo $1 echo $2 return 0 } 我从我的python文件中直接调用这个函数 subprocess.Popen( ['bash', ' -c', '. test.sh; configure 1 2']) 现在,我想从这个函数中获取返回值,如果出现错误,我也要捕获返回值。您根本没有将configure 1 2传递给脚本。您正在将该字符串传递给bash,但没

我有一个bash脚本,其中有这样一个函数

configure()
{
    echo $1
    echo $2
    return 0
}
我从我的python文件中直接调用这个函数

subprocess.Popen(
            ['bash', ' -c', '. test.sh; configure 1 2']) 

现在,我想从这个函数中获取返回值,如果出现错误,我也要捕获返回值。

您根本没有将
configure 1 2
传递给脚本。您正在将该字符串传递给bash,但没有告诉bash将其传递给脚本。请将其与
['bash','-c','.test.sh;configure 1 2']
进行比较,这两个命令都需要在
-c
之后立即包含在参数中,才能被视为bash应该运行的脚本的一部分。之后的下一个参数是
$0
,之后的参数是
$1
,等等——但是您告诉bash运行的脚本完全忽略了
$0
$1
,等等。您应该先弄清楚如何运行bash脚本以获得所需的输出,然后才让Python参与进来带引号的“$1”;请参阅。如果要调用
bash-c
,最好将整个字符串传递给
subprocess.Popen()
,然后使用
shell=True
选项。