2017-07-25 20 views
2
Ubuntuのターミナルで次のコマンドを実行

私は結果が期待している:Pythonと環境変数

$export number=3 
echo $number ###3 
$python 
>>>import os 
>>>print(os.environ['number']) ###prints 3 

中:NameError:中

$python -c 'import os;print(os.environ['number'])' 

結果名 '数' が定義されていませんが。

なぜですか? python -cでenv変数を取得することは可能ですか?

+1

python -c 'import os; print(os.environ ["number"])' – Chengzhi

答えて

5

私の単一引用符を二重引用符の内側にあるので、うまくその問題に

python -c "import os;print(os.environ['number'])" 3

作品を避けるために(少なくとも、外側のもの)あなたは二重引用符のためのあなたの単一引用符を変更することを確認してください。

編集:あなたの例の問題は、あなたがPython内で一重引用符を使用しているという事実ではなく、あなたのシェルがそれらの一重引用符を解釈しているということです。

、bashのmanページから:

単一引用符はバックスラッシュが先行した場合であっても、単一引用符の間に発生しない場合があります。

+0

この問題の原因は何ですか?二重引用符と一重引用符はPythonで互換的に使用できると思いましたか? – mokebe

+0

詳細を提供するために私の答えを編集します。文字列の場合は –

+0

( "mystring"は 'mystring'と同じですが)、あなたの場合、コンピュータは4つの一重引用符を解析し、最初の文字列は2番目の一重引用符で終わると考えていますが、 。そのため、一重引用符と二重引用符を使用する必要があります – aless80