Python
使用 Python 執行多行命令
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 提供的標準輸入。大多數實用程序都實現了這一點,即-
在命令之後意味著輸入來自需要解析的標準輸入。python - <<'EOF' print("I'm running Python.") print("Are you now?") EOF
\n
如果沒有使用它們的命令(如printf
or ),shell 也無法辨識文字轉義echo -e
。其中的字元串在".."
將其傳遞給執行檔之前由底層 shell 處理。由於沒有可用於文字\n
的特殊處理,shell 不會將其擴展為多行。您仍然應該在使用時隱式生成換行符,方法
-c
是按下Enter
終端上的鍵並繼續輸入下一組命令python -c "print(0) > print(1)"
仍然使用
python -c
和執行此操作的另一種方法是定義字元串,使嵌入的換行符在".."
.bash
在/中做的一種方法zsh
是使用ANSI-C 引用並做python -c $'print(0)\nprint(1)'
即,在將其傳遞給執行檔之前,shell 會擴展
$'..'
the\n
和少數其他轉義序列。現在您的python
解釋器看到傳遞給它的兩條單獨的行。在 StackOverflow 上還有寫得很好的跨站點欺騙- 在單行命令行中執行多行語句?解釋這一點。