spr*_*aff 3 python bash echo cat python-3.x
#!/bin/bash
echo "print('Hello 1')" | python3
cat | python3 -u <<EOF
print('Hello 2')
EOF
echo "print('Hello 3')" | python3
Run Code Online (Sandbox Code Playgroud)
这输出
Hello 1
Hello 2
Run Code Online (Sandbox Code Playgroud)
在打印决赛之前,它会等我按回车键Hello 3
.它也使用python的-u
标志进行无缓冲输出.
为什么这样做cat
但不是为了echo
?
你没有用猫.你正在使用here-doc,cat正在等待输入.只需删除cat |
并再次尝试.
echo "print('Hello 1')" | python3
python3 -u <<EOF
print('Hello 2')
EOF
echo "print('Hello 3')" | python3
Run Code Online (Sandbox Code Playgroud)
cat,你使用它的方式,将stdin传递给它的stdout,成为管道另一端的proc的stdin,但是你也定义了一个<<EOF
优先的here-doc并忽略了它cat
的空输出.
猫仍然在等待输入.一旦你点击返回它(通过OS魔术)尝试并意识到没有人正在监听管道,并退出.
顺便说一句,你也可以使用here-string,如下所示:
python3 <<< "print('Hello 2')"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
94 次 |
最近记录: |