Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Shell将python脚本的stdout重定向到我的Shell变量中?_Python_Shell - Fatal编程技术网

为什么Shell将python脚本的stdout重定向到我的Shell变量中?

为什么Shell将python脚本的stdout重定向到我的Shell变量中?,python,shell,Python,Shell,我正在关注另一个老帖子来解决我遇到的一个问题。我的python脚本返回一个值,我希望shell脚本能够检索该值。所以我遵循了这个提示: 您可以用Python打印您的值,如下所示: 在shell脚本中: 问题是我的python中的每个sys.stdout都存储在fooShell中。所以我的变量有所有的输出,但不是我想要返回的变量。你有什么建议吗 编辑:在python脚本的末尾有一个简单的“返回变量”。我需要shell脚本来调用python并获得由它计算的变量。如何将变量从python环境传输到sh

我正在关注另一个老帖子来解决我遇到的一个问题。我的python脚本返回一个值,我希望shell脚本能够检索该值。所以我遵循了这个提示:

您可以用Python打印您的值,如下所示:

在shell脚本中:

问题是我的python中的每个
sys.stdout
都存储在
fooShell
中。所以我的变量有所有的输出,但不是我想要返回的变量。你有什么建议吗


编辑:在python脚本的末尾有一个简单的“
返回变量”。我需要shell脚本来调用python并获得由它计算的变量。如何将变量从python环境传输到shell环境?

预计
python fooPy.py
的所有
stdout
都将保存到
fooShell
。如果要隔离此函数返回的值并将其放入shell中,可以将其保存到文件中,如下所示

f = open('fooPy.txt','w')
f.write(str(fooPy))
f.close()
然后在shell脚本中

fooShell=$(cat fooPy.txt)
rm fooPy.txt

脚本没有返回值,它们有退出代码和输出,所以这里似乎有一些误解。你能更准确地解释你想做什么吗?(至于sys.stdout进入shell变量的原因,
$()
构造就是这样做的…)进程通过stdio通道相互通信。shell和常见的*nix实用程序在这方面特别擅长(想想shell管道
cmd1 | cmd2 | cmd3
)——想象一下,shell进入python进程的内存提取值是多么困难/不安全。作为真正的注释,这就是它的工作方式。感谢您的建议,这似乎很不寻常,我将尝试一下。这是在环境之间传递价值的唯一方式吗?
f = open('fooPy.txt','w')
f.write(str(fooPy))
f.close()
fooShell=$(cat fooPy.txt)
rm fooPy.txt