2017-04-14 10 views
0

からシェル変数にアクセスすることはできません2.7は、私はOSXのターミナルとPythonを使っているPythonスクリプト

私のシェルスクリプト:

#!/bin/bash 
echo Enter the name of the file 
read fileName 
python gulp.py 

私のPythonスクリプト:ノー肯定的な結果を試してみました

import os      #import vars 
try: 
    print os.environ["fileName"] #print imported var 
except KeyError: 
    print "Please set the environment variable" 
fileTitle=fileName + '.inp' 
f=open('fileTitle', 'r') 
line=f.readlines() 
print line[0] 

import sys 
var1=sys.arg[1] 

および

import os 
os.getenv["fileName"] 

シェルとPythonスクリプトは同じフォルダ内にある

は、事前にありがとうございます!

+1

'F =オープン(「fileTitle」、「R」)でファイル名の周りの単一引用符を'リテラルファイル名を開けます'fileTitle'ではなく、あなたが探していた値を含む変数' fileTitle'ではありません。それを 'f = open(fileTitle、 'r')'に変更してください。これはもちろん、exportまたはcliを介して子プロセスに利用可能なos envを設定することに加えてです。 – alvits

答えて

1

変数は、それ以外の場合は、他のプログラムに渡されることはありません、シェルでexport用にマークする必要があります注意する

#!/bin/bash 
echo Enter the name of the file 
read fileName 
export fileName 
python gulp.py 

もの:

  • exportはどこにでもいる限り行くことができますpythonの前に実行されています。変数が割り当てられた後である必要はありません。
  • bashで小文字の変数名を使用することは、バグを防ぐ優れた習慣です。エクスポートされた変数は、従来は大文字です。 export FILENAME="$fileName"またはプレフィックスの割り当て使用して:あなたは、その値を別の名前をエクスポートすることで、両方を持つことができますFILENAME="$fileName" python gulp.py
+0

ありがとうございます。どういうわけか私はその解決策を見いださなかった –

関連する問題