1

示例 - 任何 bash 关键字(例如elseor 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

双引号不能解决它。

4

4 回答 4

6

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'

(其中$'...'是一种 Bash 语法,它允许在字符串中使用类似 C 的转义序列,例如\n换行符)。

于 2013-02-06T02:09:27.280 回答
1

请尝试以下

python -c "exec(\"import sys;\\nfor p in sys.path:print p\")"
于 2013-02-06T02:15:09.330 回答
1

这是另一种方法....更直接一点

python -c "import sys; print '\n'.join(sys.path)"
于 2013-02-06T02:28:39.727 回答
0

如果分号和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 ''"
于 2013-05-11T00:08:46.083 回答