2012-12-19 14 views
8

W poniższym kodzie konstruuję zmienną $ probe1, którą chcę następnie przekazać do skryptu bash. I przykład zabawkowy poniżej, wyjście jest puste, tj. $ Probe1 nie jest rozpoznawany przez skrypt powłoki bash w wywołaniu os.system. Co musi być zrobione?przekazywanie zmiennych z Pythona do skryptu powłoki bash poprzez os.system

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

'sonda 1 =„...”' zestawy zmienna Pythona. Nie ma żadnego związku z Bashem. – Blender

+0

Czy jest jakiś sposób przeniesienia zmiennej z Pythona do powłoki bash? Zasadniczo to moje pytanie. – user1815498

+0

Dlaczego miałbyś to robić? – Blender

Odpowiedz

10

Wydaje się to, co chce zrobić:

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

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

Ale nie mam pojęcia, dlaczego chcesz to zrobić ...

+0

Używam python, aby wyodrębnić niektóre nazwy zmiennych z pliku danych, które następnie muszę przekazać do skryptu powłoki bash, aby uruchomić go w innym programie. Przykład z echo to po prostu "zabawkowy" skrypt ilustrujący problem przenoszenia zmiennej z Pythona do powłoki bash. – user1815498

+0

@ user1815498 Być może możesz użyć 'pipe' do zrobienia tego: http://docs.python.org/2/library/subprocess.html – satoru

+0

W każdym razie proponowane rozwiązanie os.environ [] rozwiązuje mój problem. Dziękuję za odniesienie do rury, przyda się, gdy będę musiał przekazać wiele zmiennych z Pythona do powłoki. – user1815498

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

sonda 1 jest zmienna pyton nie zmiennej powłoki.

os.environ['probe1'] = probe1 

ustawi zmienną środowiskową bash na zawartość zmiennej Pythona. Po wyjściu skryptu Pythona zmienna środowiskowa znika.

+0

Wiem, że moje pytanie jest, w jaki sposób można przenieść zmiennej Pythona do powłoki bash. – user1815498

Powiązane problemy