2014-03-13 35 views
0

如何在从shell脚本传递的python文件中执行一个变量..?如何访问从shell脚本传递的python文件中的变量..?

我从shell脚本导出变量xyz。现在我想检查它的价值在Python中,文件如何做到这一点?

我已经尝试使用:

#Python 
if '$xyz' 
flag+= '-DVERSIONNUMBER' 

基本上我有,如果XYZ持有一些价值,是不为空创建宏。你能建议一种方法来做到这一点? 我的另一个疑问是,我们可以在IE中Python文件选择性地定义一个宏,如果xyz是空的,我不希望被定义的标志,所以,在.c文件,我可以检查:

#if defined (VERSIONNUMBER) 
//code 
#else 
//code  
#endif 

简而言之,我必须执行以下步骤:

  • 从shell传入xyz。
  • 检查它在Python中是否为空,并定义一个值为xyz的标志
  • 检查该标志是否在python中定义并在.c文件中执行某些代码。
+0

当你说出口变量时,shell脚本是否把它变成了一个环境变量? –

+0

将参数传递给python将放入'sys.argv'列表(pythons数组)中。如果你传递了一个参数,你可以通过以下命令来检索它:'import sys'' var = sys.argv [1]'(数组从0开始,但sys.argv的第一个位置用作文件名)。如果你只是想看看它是否存在,你可以做'如果len(sys.argv)> 1'。如果你想设置默认值或做更复杂的事情,请查看内置的参数模块。 – CasualDemon

+0

@CasualDemon,bash中的'export'关键字标记一个要导出到环境的shell变量。因此,“从shell脚本中导出一个变量”具有特定的技术含义,而不是仅指一般的通过。 –

回答

3

环境变量可以通过os.environ['varname']访问。

在你的shell:

export VERSIONNUMBER=1 

在你的Python:

if os.environ.get('VERSIONNUMBER'): 
    pass # do something here 

注意环境传递只在一个方向 - 从父母到孩子。因此,更改从Python脚本内的os.environ['VERSIONNUMBER']的值将对其启动的任何子进程(其子进程)产生影响,但不会影响启动它的子进程(其父进程)。

相关问题