如何使用python-c“;“此处代码”;有新线吗?

如何使用python-c“;“此处代码”;有新线吗?,python,bash,cmd,command-line,Python,Bash,Cmd,Command Line,命令 python -c "print('hello')" 在Linux(bash)和Windows(cmd.exe)中成功运行引号内的代码 但是如何使用python-c通过换行符传递代码? 例子:两者都有 python -c "for i in range(10): if i % 2 == 0: print('hello')" python -c "for i in range(10):\n if i % 2 == 0:\n

命令

python -c "print('hello')"
在Linux(bash)和Windows(cmd.exe)中成功运行引号内的代码

但是如何使用
python-c通过换行符传递代码?

例子:两者都有

python -c "for i in range(10): if i % 2 == 0: print('hello')"
python -c "for i in range(10):\n    if i % 2 == 0:\n        print('hello')"
失败


示例用例:我需要发送一个SSH命令(使用paramiko)在远程服务器上执行一个简短的Python代码,因此我需要传递一个命令,如
ssh.exec_命令('python-c“…”)
您可以使用bash的字符串语法来获取换行符:

python -c $'for i in range(10):\n if i % 2 == 0:\n  print("hello")'
(我在这里使用单空格缩进)

对于windows,您确实应该使用powershell,它的新行是
`n

python -c "for i in range(10):`n if i % 2 == 0:`n  print('hello')"

在cmd.exe中,您似乎可以使用
^
来转义换行符,但是我目前无法测试这一点,所以您应该这样做。

一种方法是使用
exec()
,这使得字符串可以执行。它看起来很糟糕,但它确实有效

python -c "exec(\"for i in range(10):\n if i % 2 == 0:\n  print('hello')\")"

您可以使用
bash
“herdoc”(也可以使用
ksh
和POSIX shell):


python在不使用
-c
的情况下,值得一提的是,如果使用
Bash
,您可以通过管道将回显的代码直接传输到
python

echo -e 'for i in range(10):\n if i % 2 == 0:\n  print("hello")' | python

遵循Aplet123的引导并使用单空格缩进。

您可以在中使用
$'foo bar'
字符串bash@Basj也许考虑更新你的问题,以便更好地代表你实际上想要做的事情。
echo -e 'for i in range(10):\n if i % 2 == 0:\n  print("hello")' | python