Python 有一个选项允许我们将 python 语句作为参数传递给程序。
一个示例用法是
$ python -c "print(\"I'm running Python.\")"
I'm running Python.
在 Python 的手册页中,我们阅读
当使用-c命令调用时,它执行 作为命令给出的 Python 语句。这里的命令可能包含多个 ple 语句由换行符分隔。
我正在尝试传递多行,但不能:
$ python -c "print(0)\nprint(1)"
File "<string>", line 1
print(0)\nprint(1)
^
SyntaxError: unexpected character after line continuation character
我也试过 Here-documents 没有成功。我该如何进行这项工作?
使用 shell 支持的 here-doc,而不是依赖
python
. 这样,您需要对引号进行多级嵌套,并像在脚本上一样自由地键入代码。-
after可执行文件意味着要运行的python
命令来自您从 here-doc 提供的标准输入。大多数实用程序都实现了这一点,即-
在命令之后意味着输入来自需要解析的标准输入。\n
如果没有使用它们的命令(如printf
or ),shell 也无法识别文字转义echo -e
。其中的字符串在".."
将其传递给可执行文件之前由底层 shell 处理。由于没有可用于文字\n
的特殊处理,shell 不会将其扩展为多行。您仍然应该在使用时隐式生成换行符,方法
-c
是按下Enter终端上的键并继续输入下一组命令仍然使用
python -c
和执行此操作的另一种方法是定义字符串,使嵌入的换行符在".."
.bash
在/中做的一种方法zsh
是使用ANSI-C 引用并做即,在将其传递给可执行文件之前,shell 会扩展
$'..'
the\n
和少数其他转义序列。现在您的python
解释器看到传递给它的两条单独的行。在 StackOverflow 上还有写得很好的跨站点欺骗- 在单行命令行中执行多行语句?解释这一点。