Python 有一个选项允许我们将 python 语句作为参数传递给程序。
\n\n一个示例用法是
\n\n$ python -c "print(\\"I\'m running Python.\\")"\nI\'m running Python.\nRun Code Online (Sandbox Code Playgroud)\n\n在 Python 的手册页中我们读到
\n\n当使用-c命令调用时,它会执行作为命令给出的 Python 语句。这里的命令可能包含多个由换行符分隔的\xe2\x80\x90\n ple语句。\n\n
我试图传递多行,但不能:
\n\n$ python -c "print(0)\\nprint(1)"\n File "<string>", line 1\n print(0)\\nprint(1)\n ^\nSyntaxError: unexpected character after line continuation character\nRun Code Online (Sandbox Code Playgroud)\n\n我也尝试过这里文档但没有成功。我该如何进行这项工作?
\n使用 shell 支持的here-doc,而不是依赖python. 这样,您需要对引号进行多层嵌套,并像在脚本上一样自由地键入代码。
可执行文件-后面的python意味着要运行的命令来自您从此处文档提供的标准输入。大多数实用程序都实现了这一点,即-命令后面的 意味着输入来自需要解析的标准输入。
python - <<'EOF'
print("I'm running Python.")
print("Are you now?")
EOF
Run Code Online (Sandbox Code Playgroud)
如果没有像或\n那样使用它们的命令,shell也无法识别转义的文字。其中的字符串在传递给可执行文件之前由底层 shell 进行处理。由于没有可用于文字的特殊处理,因此 shell 不会将其扩展到多行。printfecho -e".."\n
-c在使用时,您仍然应该通过按Enter终端上的按键并继续键入下一组命令来隐式生成换行符
python -c "print(0)
> print(1)"
Run Code Online (Sandbox Code Playgroud)
仍然使用和执行此操作的另一种方法python -c是定义字符串,以便在"..". bash在/中执行的一种方法zsh是使用ANSI-C 引用并执行
python -c $'print(0)\nprint(1)'
Run Code Online (Sandbox Code Playgroud)
即,在将其传递给可执行文件之前,shell 会扩展$'..'the和其他一些转义序列。\n现在你的python解释器看到传递给它的两行单独的行。
StackOverflow上也有写得很好的跨站点欺骗- Executing multi-line statements in the one-line command-line? 解释这一点。
| 归档时间: |
|
| 查看次数: |
5998 次 |
| 最近记录: |