Выполнять команды из stdin в stdout без оператора печати, как в REPL - PullRequest
0 голосов
/ 29 мая 2020

Самый простой способ сделать это:

> echo 1+1 | [run python in REPL and exit with capturing all statement values to stdout ]
2

Да, мы можем сделать echo "print(1+1)" | python, но для этого нужно написать print. Дело в том, чтобы заставить python вести себя как PowerShell:

> echo 1+1 | powershell -c -
2

Да, мы можем сделать echo 1+1 | python -i, но это выводит некоторый шум (python версия и c.).

1 Ответ

0 голосов
/ 29 мая 2020

Следующее ниже не рекомендуется, так как оно использует небезопасную функцию eval. Однако в контексте того, о чем вы просите, когда вы, кажется, контролируете все этапы процесса, это подойдет.

Напишите следующую простую Python программу (my_program.py):

import sys

sys.stdout.write(str(eval(sys.stdin.read())))

Затем используйте:

> echo 1+1 | python my_program.py
2
...