首页 > 解决方案 > 为什么有时在 PowerShell(以及命令提示符)中使用单引号将命令括起来时不起作用?

问题描述

Python 文档中它说:

启动解释器的第二种方法是python -c *command* [arg] ...,它执行命令中的语句,类似于 shell 的-c选项。由于 Python 语句通常包含空格或其他 shell 特有的字符,因此通常建议使用单引号将整个命令引用。

所以为了测试这个特性,我在 PowerShell 中尝试了这个:

> py -c 'print("Hello, World!")'

它显示了这个错误:

File "<string>", line 1
    print(Hello, World!)

但是,当我使用双引号时,它工作得很好:

> py -c "print('Hello, World!')"

似乎它只发生在字符串上。对于数字,它工作正常。我认为这里的问题与使用引号有关。为什么会这样?

标签: pythonpowershellinterpreterdouble-quotessingle-quotes

解决方案


我的猜测是(就像在 powershell 中一样)单引号不会被解释,而是字符串是字符串。这意味着 python 将第一个测试py -c 'print("Hello, World!")'视为所有字符串,但py -c需要一个命令。而使用双引号,pythonprint()在字符串中查找函数(在您的 test 中)并执行它们。

我没有在网上找到这方面的证据,但我们在 powershell 中有相同的博客文章描述


推荐阅读