2017-03-07 15 views
1

環境変数を使ってシェルコマンドにいくつかの秘密を渡そうとしています。 Popenは引数をエスケープしてコマンドが変数値を得ることができないように "一重引用符の概念"を使用しているようです。Popenでシェル変数の値を取得する方法

Python 2.7.1 (r271:86832, Mar 3 2017, 10:25:58) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux3 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import subprocess 
>>> subprocess.Popen(['echo','$PATH']) 
$PATH 

の予想される出力のような本当の$ PATHの値である "/ binに:/ sbinにします。/ usr/binに..."

ありがとう!

答えて

3

ように注意してください:

subprocess.Popen('echo $PATH', shell=True) 

しかし、これは、あなたが望むすべてであるならば、この考えてみます。

print os.getenv('PATH') 
1

シェルを使用すると、コマンドラインが外部ソースからファイルされていると危険です。注意して使用してください。

また、コマンドを起動するときにシェルをどこに置くべきかを決めるオプションのパラメータがあります。

command = 'echo $PATH' 
p = subprocess.Popen(command, shell=True, cwd='./') 
p.communicate() # it would wait until the subprocess is complete. 
関連する問題