2012-12-19 9 views
8

次のコードでは、私がbashスクリプトに渡す変数$ probe1を作成します。私は以下のおもちゃの例では、出力は空白です。つまり、$ probe1はos.system呼び出し内のbashシェル・スクリプトでは認識されません。何をする必要がありますか?os.system経由でPythonからbashシェルスクリプトに変数を渡す

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 =「...」'セット...

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

しかし、私はあなたがこれをやりたい理由はわかりませんPython変数。バッシュとは全く関係がありません。 – Blender

+0

Pythonからbashシェルに変数を引き継ぐ方法はありますか?それは基本的に私の質問です。 – user1815498

+0

なぜこれを行う必要がありますか? – Blender

答えて

10

これはあなたがやろうとしているものであるように思える:

+0

私はデータファイルからいくつかの変数名を抽出するためにpythonを使用しています。次に、別のプログラムで実行するためにbashシェルスクリプトに渡す必要があります。 echoを使用した例は、変数をPythonからbashシェルに移動する問題を示す「おもしろい」スクリプトです。 – user1815498

+0

@ user1815498おそらくあなたはそれを行うために 'pipe'を使うことができます:http://docs.python.org/2/library/subprocess.html – satoru

+0

いずれにせよ、あなたが提案するos.environ []解決策は私の問題を解決します。パイプ参照をありがとう、私はシェルに複数の変数をPythonから渡す必要があるときに便利になるでしょう。 – user1815498

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

PROBE1 Pythonの変数ではなく、シェル変数です。

os.environ['probe1'] = probe1 

は、bash環境変数をpython変数の内容に設定します。 Pythonスクリプトが終了すると、環境変数はなくなります。

+0

私が知っているのは、私の質問は、どのように私はbashシェルにPythonの変数を転送することができます知っている。 – user1815498

関連する問題