2017-04-14 76 views
0

我使用OSX終端和Python訪問shell變量2.7無法從Python腳本

我的shell腳本:

#!/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

謝謝。不知何故,我沒有找到解決方案 –