Выполнять команды python, переданные как строки в командной строке, используя python -c

Можно ли выполнить команды python, переданные как строки, используя python -c? может кто-нибудь дать пример.

Ответ 1

Для одной строки вы можете использовать python -c. Но для строк, как задает вопрос, вы должны передать их в stdin:

$ python << EOF
> import sys
> print sys.version
> EOF
2.7.3 (default, Apr 13 2012, 20:16:59) 
[GCC 4.6.3 20120306 (Red Hat 4.6.3-2)]

Ответ 2

Вы можете использовать -c, чтобы заставить Python выполнять строку. Например:

python3 -c "print(5)"

Однако, похоже, не существует способа использовать escape-символы (например, \n). Поэтому, если они вам понадобятся, используйте трубку от echo -e или printf. Например:

$ printf "import sys\nprint(sys.path)" | python3

Ответ 3

Python имеет eval. Попробуйте script.

import sys

str = sys.argv[1]
eval(str)

Вызвать это следующим образом:

 $ python3 eval.py 'print(1 + 1)'
 2