Executing multi-line statements in the one-line command-line Ask Question

Executing multi-line statements in the one-line command-line Ask Question

I'm using Python with -c to execute a one-liner loop, i.e.:

python -c "for r in range(10): print 'rob'"

This works fine. However, if I import a module before the for loop, I get a syntax error:

python -c "import sys; for r in range(10): print 'rob'"

  File "<string>", line 1
    import sys; for r in range(10): print 'rob'
              ^
SyntaxError: invalid syntax

How can this be fixed?

It's important to me to have this as a one-liner so that I can include it in a Makefile.

ベストアンサー1

You could do

echo -e "import sys\nfor r in range(10): print 'rob'" | python

Or without pipes:

python -c "exec(\"import sys\nfor r in range(10): print 'rob'\")"

Or

(echo "import sys" ; echo "for r in range(10): print 'rob'") | python

Or SilentGhost's answer or Crast's answer.

おすすめ記事