2012-05-26 13 views

Odpowiedz

7

Dla pojedynczy ciąg można użyć python -c. Ale dla ciągów gdy pytanie dotyczy, należy przekazać je do 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)] 
+4

Znalazłem odpowiedź. po prostu skopiuj to na terminalu. python -c "importuj sys; x =" cześć świat "; drukuj x;" – kasa

+0

To jest ciąg * a *. Jeśli chcesz * ciągi *, musisz podać je do standardowego wejścia. –

0

Python ma eval. Wypróbuj ten skrypt.

import sys 

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

Wywołuje to tak:

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

Można użyć -c uzyskać Python wykonać ciąg. Na przykład:

python3 -c "print(5)"

Jednak tam nie wydaje się być sposób na wykorzystanie znaków ewakuacyjnych (np \n). Tak więc, jeśli ich potrzebujesz, użyj zamiast tego rurki z echo -e lub printf. Na przykład:

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

+0

'python3 -c" importuj sys; print (sys.path) "' jest prostsze. – mattmc3

+0

@ mattmc3 Nie można zakończyć bloku (w którym wcięcie zmniejszyłoby się) średnikiem. Więc jest bardziej ograniczony; nie można na przykład utworzyć funkcji, a następnie wywołać jej, lub użyć kodu if-else, a nawet, jeśli następuje bezwarunkowy kod. Ale (o ile to możliwe) jest prostsze. – Kevin

Powiązane problemy