Python tem uma opção que nos permite passar instruções python como um argumento para o programa.
Um exemplo de uso é
$ python -c "print(\"I'm running Python.\")"
I'm running Python.
Na página de manual do Python, lemos
quando chamado com o comando -c , ele executa o Instrução(ões) Python fornecida(s) como comando. Aqui o comando pode conter vários ple instruções separadas por novas linhas.
Estou tentando passar em várias linhas, mas não consigo:
$ python -c "print(0)\nprint(1)"
File "<string>", line 1
print(0)\nprint(1)
^
SyntaxError: unexpected character after line continuation character
Eu também tentei Here-documents sem sucesso. Como faço isso funcionar?
Use here-doc's suportados pelo seu shell, em vez de confiar nas próprias opções do
python
. Dessa forma, você precisa fazer um aninhamento de vários níveis de suas cotações e digitar seu código de forma livre, como pode fazer em um script.O
-
depois dopython
executável significa que os comandos a serem executados vêm da entrada padrão que você está alimentando do here-doc. A maioria dos utilitários implementa isso, ou seja,-
após um comando significa que uma entrada está vindo da entrada padrão que precisa ser analisada.Também os escapes literais
\n
não são reconhecidos pelo shell sem comandos que os usem comoprintf
ouecho -e
. A string dentro".."
é processada pelo shell subjacente antes de passá-la para o executável. Como não há processamento especial disponível para o literal\n
, o shell não o expande para várias linhas.Você ainda deve gerar a quebra de linha implicitamente enquanto estiver usando
-c
pressionando a Entertecla no terminal e continuar digitando o próximo conjunto de comandosUma outra maneira de ainda usar
python -c
e fazer isso seria definir a string de forma que as novas linhas incorporadas sejam analisadas dentro do".."
. Uma maneira de fazer embash
/zsh
seria usar ANSI-C Citação e fazerou seja, dentro da
$'..'
e\n
poucas outras sequências de escape são expandidas pelo shell antes de passá-lo pelo executável. Agora seupython
interpretador vê duas linhas separadas passadas para ele.Além disso, há um engano entre sites muito bem escrito no StackOverflow - Executando instruções de várias linhas na linha de comando de uma linha? explicando isso.