有人可以解释为什么这个短的bash/python命令不输出"你好"
$ echo hello | python - <<END
import sys
for line in sys.stdin:
print line
END
Run Code Online (Sandbox Code Playgroud)
如果我将我的python脚本保存到文件,此命令将按预期工作.
在script.py中
import sys
for line in sys.stdin:
print line
END
Run Code Online (Sandbox Code Playgroud)
$ echo"你好"| python script.py
"你好"
它不起作用的原因是你有重叠的冲突. echo | python尝试将标准输入绑定到管道echo,同时python - <<HERE尝试将标准输入绑定到此文档.你不能两者兼得.(这里的文件获胜.)
但是,实际上没有理由想要在标准输入上管道脚本本身.
bash$ echo hello | python -c '
> import sys
> for line in sys.stdin:
> print line'
hello
Run Code Online (Sandbox Code Playgroud)