gpt4 book ai didi

python - 为什么当我使用 echo 而不是 cat 管道代码时,python 会立即退出?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:52 24 4
gpt4 key购买 nike

#!/bin/bash

echo "print('Hello 1')" | python3

cat | python3 -u <<EOF
print('Hello 2')
EOF

echo "print('Hello 3')" | python3

这输出

Hello 1
Hello 2

在打印最后的 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

cat,您使用它的方式,会将其标准输入通过管道传输到其标准输出,成为管道另一侧的 proc 的标准输入,但您还定义了一个 <<EOF。 here-doc 优先并忽略 cat的空输出。

cat 仍在等待输入。一旦您点击返回,它(通过 OS 魔法)尝试并意识到没有人在管道上监听,然后退出。

顺便说一句,您还可以使用 here-string,如下所示:

python3 <<< "print('Hello 2')"

关于python - 为什么当我使用 echo 而不是 cat 管道代码时,python 会立即退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com