2012-12-19 131 views
8

在下面的代码中,我构建了一个变量$ probe1,然后传递给bash脚本。我是下面的玩具示例,输出是空白的,即$ probe1不能识别os.system调用中的bash shell脚本。需要做什么?通过os.system将变量从python传递到bash shell脚本

for line1 in datfile: 
    datmat=datmat+[line1.rstrip('\n').split('\t')] 
     probe=datmat[i][0] 
     snp1=datmat[i][2] 
    probe1='permprobes'+probe+'pheno.pphe' 
    os.system('echo $probe1') 
+0

'PROBE1 =“...”'套一个Python变量。它与Bash无关。 – Blender

+0

是否有某种方法可以将变量从python传递到bash shell?这基本上是我的问题。 – user1815498

+0

你为什么需要这样做? – Blender

回答

10

好像这是你正在尝试做的:

In [2]: os.environ['probe1'] = 'hello' 

In [3]: os.system('echo $probe1') 
hello 

但我不知道为什么你想做到这一点...

+0

我使用python从数据文件中提取一些变量名,然后我需要将它传递给bash shell脚本以在另一个程序中运行。 echo的例子只是一个“玩具”脚本来说明将变量从python移动到bash shell的问题。 – user1815498

+0

@ user1815498也许你可以使用'pipe'来做到这一点:http://docs.python.org/2/library/subprocess.html – satoru

+0

无论如何,你提出的os.environ []解决方案解决了我的问题。感谢您的管道引用,当我需要将多个变量从python传递到shell时,它会派上用场。 – user1815498

4
os.system('echo {0}'.format(probe1)) 

PROBE1是一个python变量,而不是一个shell变量。

os.environ['probe1'] = probe1 

将设置bash环境变量为python变量内容。一旦python脚本退出,环境变量就会消失。

+0

我知道,我的问题是我如何将一个python变量传递给bash shell。 – user1815498