为什么 `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 正在将第二个参数“扩展”到'print(howdy)'. 如果你在 python 中运行这个命令,你会得到你描述的错误。
THE END
二维码