将Python3变量传递给C Shell脚本

时间:2014-03-17 17:10:03

标签: python shell csh

关于以下问题我做了几个小时的研究,但我根本找不到答案。虽然似乎有许多研究员遇到了问题。我希望我能从社区获得一些帮助。 ;)

我有一个Cshell脚本,我需要从中调用Python3脚本。我也传递一个变量。 .csh

#!/bin/csh -f

set variable = value
/../geos.py $variable  

到目前为止一切都很好。在我的Python3脚本中,我接受这个变量,进行一些计算,现在想要将'new_variable'传回VERY SAME C shell脚本以继续我的数据集。

的.py

import os
...
new_variable = 'foobar'
os.environ['new_variable'] = new_variable
return new_variable

我的实际目标是我的C Shell脚本:

#!/bin/csh -f

set variable = value
/../geos.py $variable  

echo $new_variable

不会返回'未定义的变量'。显然我的代码不起作用。当然,我可能暂时将python计算保存到文件中,但这看起来相当令人难以置信。另外,我知道通过子进程操作shell的环境变量是不可能的,但我仍然只想传递一个普通的变量。应该有一种方式,不是吗? 如果可能的话,我无法使用subprocess.check_call找出任何解决方案。我错过了什么?

E D I T: Merci beaucoup。

我知道一定有一个简单的解决方案。非常感谢! 对于CSHELL,以下代码有效:

set new_variable=`../geos.py $variable`
echo $new_variable

对于BASH,以下代码有效:

new_variable=`../geos.py $variable`
echo $new_variable

在python脚本中,你不需要做任何事情,只需将你想要的变量放到标准输出中,例如打印(you_even_can_name_them_as_you_want)。没有任何必要的os.environ oo。让我的一天。解决

1 个答案:

答案 0 :(得分:4)

在bash中我会使用:

new_variable=$(../geos.py $variable)

让python脚本生成标准输出的新值(即print(new_variable)

在csh我不知道,也许你不得不使用反引号代替$()?