2017-04-14 81 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

谢谢。不知何故,我没有找到解决方案 –