2012-12-19 129 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