我正在尝试运行这个:
python -c "for i in range(10):\n print i"
但是我遇到了一个错误:
File "<string>", line 1
for i in range(10):\n print i
^
SyntaxError: unexpected character after line continuation character
根据this,我认为
bash
应该处理(即换行符)命令行参数,但返回的错误显示相反的情况。我错在哪里,这是为什么呢?附注:python-2.7
编辑
让我稍微解释一下我的动机。 这个代码示例肯定很愚蠢。由于文档中说“
command
可以是一个或多个语句,用换行符分隔,具有与普通模块代码相同的重要前导空格”,我想知道如何正确地将那些提到的换行符带到command
中。
这里提出的解决方案是:
在循环内使用
;
来区分多个命令。是的,这样可以工作,但它仍然是一条 单行 命令,如果我想要在循环之后运行一些命令,则无法使用它。;
不能替换换行符。在需要换行符的位置输入
^M
。这更准确地达到了目标,但不幸的是,从我的角度来看,这基本上破坏了从命令行运行Python代码的整个想法,因为它需要交互模式。就我所知,这与输入命令并击键Enter
是相同的。因此,与输入python
并在其 shell 中工作没有区别。也就是说,我不能在 bash 脚本中编写此内容。或者我可以吗?
可能这个问题真的应该分成两个问题:
- Bash转义:
用双引号(“”)将字符括起来可以保留引号内所有字符的字面值,但是'$'、'
'、'\'以及启用历史扩展时的'!'除外。在双引号内,'$'和'
'保留它们的特殊含义(请参见Shell扩展)。只有在反斜杠后跟以下字符之一时,反斜杠才保留其特殊含义:'$'、'`'、'"'、'\'或换行符。
这与所描述的情况相对应吗?Bash如何处理换行符?我发现将命令放入一元引号中没有任何变化。
- 如何以非交互方式向Python传递换行符。(你可能会说——为什么不写一个普通的Python文件,其中包含所有想要的换行符——你是对的,但我对文档中确切的意思很感兴趣,因为它引用了换行符)