Pythonには、Pythonステートメントを引数としてプログラムに渡すことができるオプションがあります。
使用例は
$ python -c "print(\"I'm running Python.\")"
I'm running Python.
Pythonのmanページで私たちは読んだ
-cコマンドで呼び出すと 、コマンドとして指定されたPythonステートメントを実行します。ここで、コマンドには 改行で区切られた複数のステートメントを含めることができます。
複数の行を渡そうとしていますが、できません:
$ python -c "print(0)\nprint(1)"
File "<string>", line 1
print(0)\nprint(1)
^
SyntaxError: unexpected character after line continuation character
ヒアドキュメントも試しましたが、成功しませんでした。これを機能させるにはどうすればよいですか?
からの独自のオプションに依存する代わりに、シェルでサポートされているヒアドキュメントを使用しますpython
。このように、引用符のマルチレベルのネストを実行し、スクリプトで実行できるようにコードを自由形式で入力する必要があります。
実行可能ファイルの-
後は、python
実行するコマンドがヒアドキュメントからフィードしている標準入力からのものであることを意味します。ほとんどのユーティリティはこれを実装します。つまり、-
コマンドの後は、解析が必要な標準入力から入力が渡されることを意味します。
python - <<'EOF'
print("I'm running Python.")
print("Are you now?")
EOF
また、リテラルエスケープ\n
は、printf
またはのようにそれらを使用するコマンドがないとシェルによって認識されませんecho -e
。内の文字列".."
は、実行可能ファイルに渡される前に、基になるシェルによって処理されます。リテラル\n
に使用できる特別な処理がないため、シェルはリテラルを複数行に拡張しません。
ターミナル-c
のEnterキーを押して使用中に改行を暗黙的に生成し、次のコマンドセットを入力し続ける必要があります
python -c "print(0)
> print(1)"
引き続き使用python -c
してこれを行うもう1つの方法は、埋め込まれた改行が内で解析されるように文字列を定義すること".."
です。bash
/で行う1つの方法は、ANSI-CQuotingzsh
を使用して行うことです。
python -c $'print(0)\nprint(1)'
すなわち内およびその他のいくつかのエスケープシーケンスが実行可能な上にそれを渡す前に、シェルによって展開されます。これで、インタプリタは2つの別々の行が渡されたのを確認します。$'..'
\n
python
また、StackOverflowには非常によく書かれたクロスサイト重複があります-1行のコマンドラインで複数行のステートメントを実行しますか?これを説明します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加