2017-07-25 122 views
2

执行在Ubuntu终端下列命令我期望的结果:Python和环境变量

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

而:

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

结果:NameError:名称 '编号' 没有定义。

为什么?是否有可能使用python -c获取env变量?

+1

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

回答

5

确保您更改了双引号单引号(外的,至少),以避免这个问题

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

工作得很好,因为我的单引号是双引号。

编辑:你的例子的问题不是你在Python中使用单引号的事实,问题是它是你的shell解释这些单引号。

从bash的手册页:

单引号之间可能不会出现单引号,即使前面有反斜杠。

+0

谢谢,但是这个问题的根源是什么?我认为双引号和单引号可以在python中互换使用吗? – mokebe

+0

我会编辑我的答案以提供更多详细信息。 –

+0

对于字符串是(“mystring”与'mystring'相同),但在您的情况下,计算机会解析您的四个单引号,并认为第一个字符串以第二个单引号结尾,而您希望它以第四个引号结尾。这就是为什么你必须使用单引号和双引号 – aless80