为什么 'python -c 'print('howdy')'' 会产生错误(在 zsh 中),而 'python -c 'print( "howdy" )'却没有?



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
  • 第一个参数是-c
  • 第二个参数是用引号括起来的'print(',然后是用引号括起来的howdy,然后是')'

Zsh ' s ' ' ' '正在' ' ' ' ' ';'print(howdy)'的第二个参数。如果你在python中运行这个命令,你会得到你描述的错误。

最新更新