在zsh
中,当我从命令行执行python -c 'print('howdy')'
时,它会产生以下错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'howdy' is not defined
然而,这个python -c 'print("howdy")'
没有,而是产生了我所期望的输出,即howdy
(作为字符串)被发送到stdout
?
我以为python对单引号或双引号是不可知的
Zsh首先解析命令,遵循自己的引号规则。对于zsh,命令python -c 'print('howdy')'
看起来像下面这样:
- 我们将程序命名为
python
第一个参数是 - 第二个参数是用引号括起来的
'print('
,然后是用引号括起来的howdy
,然后是')'
。
-c
Zsh ' s ' ' ' '正在' ' ' ' ' ';'print(howdy)'
的第二个参数。如果你在python中运行这个命令,你会得到你描述的错误。