как передать многострочный скрипт с отступом в виде строки интерпретатору python (- c) - PullRequest
0 голосов
/ 18 марта 2020

Если я это сделаю:

python -c 'print("Hello");print("Hello") '

python -c 'print("Hello")'

Работает как положено. Тем не менее,

python -c 'print("Hello") \n print("Hello") '

Fails.

File "<string>", line 1
    print("Hello") \n print("Hello") 
                                    ^
SyntaxError: unexpected character after line continuation character

Как обрабатывать многострочный (и с отступом) python код с помощью опции - c?

1 Ответ

3 голосов
/ 18 марта 2020

\n обрабатывается оболочкой как два символа (обратный знак sh, символ n), и это неверный синтаксис в Python, поэтому вы получаете ошибку.

Чтобы исправить это в Bash, используйте $'string':

forcebru$ python -c $'print("Hello") \nprint("Hello") '
Hello
Hello
forcebru$ 

Обратите внимание, что пробел после новой строки (\n print) будет считаться недопустимым отступом (теперь Python, а не оболочка), поэтому я удалил его.

...