4

python -cいくつかのコードをリモートで実行するために使用する必要があります。次を使用すると機能します。

python -c "a=4;print a"
4

または

python -c "if True:print 'ye'"

しかしpython -c "a=4;if a<5:print 'ye'"、エラーが発生します:

File "<string>", line 1
    a=4;if a<5:print 'ye'
    SyntaxError: invalid syntax

それを機能させるにはどうすればよいですか、アドバイスはありますか?

4

1 に答える 1

9

一重引用符で囲み、複数行を使用します。

python -c '
a = 4
if a < 5:
    print "ye"
'

コードで一重引用符が必要な場合は、次の恐ろしい構文を使用してください。

python -c '
a = 4
if a < 5:
    print '\''ye'\''
'

これが機能するのは、ほとんどの UNIX シェルが一重引用符の間で何も解釈しないためです。そのため、一重引用符が必要なところまで Python コードがいくつかあります。完全に解釈されていないため、引用を逃れることはできません。むしろ、引用を終了してから、リテラルの引用符を挿入し (エスケープされているため、新しい引用の開始として解釈されません)、最後に別の引用を挿入して、解釈されていない文字列の状態に戻します。少し醜いですが、うまくいきます。

于 2013-05-13T01:41:34.317 に答える