例 - 任意の bash キーワード (例:else
またはin
) もこれを引き起こします。
$ python -c 'import sys;for p in sys.path:print p'
File "<string>", line 1
import sys;for p in sys.path:print p
^
SyntaxError: invalid syntax
二重引用符はそれを修正しません。
例 - 任意の bash キーワード (例:else
またはin
) もこれを引き起こします。
$ python -c 'import sys;for p in sys.path:print p'
File "<string>", line 1
import sys;for p in sys.path:print p
^
SyntaxError: invalid syntax
二重引用符はそれを修正しません。
for
これは、Bash キーワードであるという事実とは関係ありません。それだけです
import sys;for p in sys.path:print p
は有効な Python 構文ではありません。python
引数なしで実行し、プロンプトでそれを入力すると、同じエラーが発生します。
改行を追加することで修正できます:
import sys
for p in sys.path:print p
これは、次のいずれかを記述することで Bash コマンドで実行できます。
python -c ' import sys
for p in sys.path:print p
'
またはこれ:
python -c $'import sys\nfor p in sys.path:print p'
(ここで、改行$'...'
などの文字列で C のようなエスケープ シーケンスを許可する Bash 構文)。\n
ここにもう1つのアプローチがあります....もう少し直接的です
python -c "import sys; print '\n'.join(sys.path)"
以下をお試しください
python -c "exec(\"import sys;\\nfor p in sys.path:print p\")"
セミコロンとcompound_stmt
キーワードが隣接していない場合に機能します。
# instead of '; for'
python -c 'import sys; print [p for p in sys.path]'
また
# instead of '; if'
python -c "x=1; print x if x>0 else ''"