2012-05-26 12 views

risposta

7

Per una stringa singola è possibile utilizzare python -c. Ma per stringhe come la questione si chiede, è necessario passare loro di 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

Ho trovato la risposta. copia semplicemente incolla questo sul terminale. python -c "importa sys; x = 'ciao mondo'; stampa x;" – kasa

+0

Questo è * una * stringa. Se vuoi * stringhe *, devi dar loro da mangiare allo stdin. –

0

Python ha eval. Prova questo script.

import sys 

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

invocarlo come questo:

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

È possibile utilizzare -c per arrivare Python per eseguire una stringa. Per esempio:

python3 -c "print(5)"

Tuttavia, non sembra essere un modo per utilizzare caratteri di escape (ad esempio \n). Quindi, se ne hai bisogno, usa una pipe da echo -e o printf. Per esempio:

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

+0

'python3 -c" importa sys; print (sys.path) "' è più semplice. – mattmc3

+0

@ mattmc3 Non è possibile terminare un blocco (dove il rientro diminuisce) con un punto e virgola. Quindi è più limitato; non è possibile, ad esempio, creare una funzione e quindi chiamarla effettivamente, o usare un if-else, o anche un if seguito dal codice incondizionato. Ma (dove possibile) è più semplice. – Kevin

Problemi correlati