使用bash echo命令输入到python一行程序中

使用bash echo命令输入到python一行程序中,python,bash,echo,stdin,Python,Bash,Echo,Stdin,我试图使用echo将一个字符串输入到Python一行程序中,然后对该字符串执行Caeasar密码 我的导师给我的一个例子是 ~ $ echo "Hello Holly." | python -c "import sys; [print(line) for line in sys.stdin]" 假设输出为:Hello Holly. 当我在中键入命令时,我得到: File "<string>", line 1 import sys; [print(line) for line in

我试图使用echo将一个字符串输入到Python一行程序中,然后对该字符串执行Caeasar密码

我的导师给我的一个例子是

~ $ echo "Hello Holly." | python -c "import sys; [print(line) for line in sys.stdin]"
假设输出为:
Hello Holly.

当我在中键入命令时,我得到:

File "<string>", line 1
 import sys; [print(line) for line in sys.stdin]
                  ^
SyntaxError: invalid syntax
文件“”,第1行
导入系统;[系统标准中的行的打印(行)]
^
SyntaxError:无效语法
如果有人能向我指出错误,我将不胜感激。我正在Centos 6上使用Python 2.6


谢谢。

在Python 2中,print是一个语句,而不是函数。请尝试以下方法:

echo "Hello Holly." | python -c "import sys; print [line for line in sys.stdin]"
或者,您可以使用以下命令来打印纯文本(谢谢@mgilson):


看起来您使用的是python2,而iConstructor使用的是Python3

更详细地说,使用Python3,OP的实现将起作用:)现在看起来不错,但您正在打印一个
列表,而不是OP想要的纯文本。最干净的可能是加入它或其他什么…@JustinC——情况并非总是如此。。。这取决于你如何编译等等。bob@pbx:~$echo“Hello Holly.”python-c“导入系统;打印[sys.stdin中的行对应行]“文件”,第1行导入系统;打印[sys.stdin中的行对应行]^IndentationError:意外indent@user3375720确保直接复制和粘贴。在CentOS 6上使用Python 2.6对我来说效果很好。看起来
遵循
python-c
import
——这可能就是导致缩进错误的原因。使用列表理解简单地将函数应用于列表中的每个项目,而不关心结果列表是一个不好的习惯;你的教练真可耻。使用
。|python-c的导入系统;打印“.join(sys.stdin)”
echo "Hello Holly." | python -c "import sys; print ' '.join([line for line in sys.stdin])"