The command
python -c "print('hello')"
runs the code inside the quotes successfully, both in Linux (bash) and Windows (cmd.exe).
But how to pass code with newlines, with python -c?
Example: both
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')"
fail.
Example use case: I need to send a SSH command (with paramiko) to execute a short Python code on a remote server, so I need to pass one command like
ssh.exec_command('python -c "..."').
Advertisement
Answer
You can use bash’s $'foo' string syntax to get newlines:
python -c $'for i in range(10):n if i % 2 == 0:n  print("hello")'
(I’m using single space indents here)
For windows, you really should be using powershell, which has `n as a newline:
python -c "for i in range(10):`n if i % 2 == 0:`n  print('hello')"
In cmd.exe, it seems that you can use ^ to escape a newline, however I’m unable to test this currently so you should refer to this question’s answers.