gpt4 book ai didi

bash - 为什么这个 echo 结构不起作用?

转载 作者:行者123 更新时间:2023-11-29 09:08:19 24 4
gpt4 key购买 nike

当我这样做时:

$ /bin/echo 123 | /bin/echo

我没有得到 o/p。这是为什么?

最佳答案

你问为什么它不起作用。事实上,它确实有效;它完全按照您的指示进行操作。显然这不是你所期望的。我认为您希望它打印 123,但您实际上并没有这么说。

(注意:“stdin”是标准输入;“stdout”是标准输出。)

/bin/echo 123 |/bin/echo

事情是这样的。 echo 命令使用参数 123 执行。它将“123”后跟一个换行符写入其标准输出。

stdout 通过管道 (|) 重定向到第二个 echo 命令的标准输入。由于 echo 命令忽略了它的标准输入,第一个 echo 的输出被悄悄地丢弃了。由于您没有为第二个 echo 命令提供任何参数,因此它不会打印任何内容。 (实际上,不带参数的/bin/echo 通常会打印一个空行;您看到了吗?)

通常管道 (|) 与 过滤器 一起使用,过滤器是从标准输入读取并写入标准输出的程序。 cat 可能是最简单的过滤器;它只是读取它的输入并将它原封不动地写入它的输出(这意味着 some-command | cat 可以写成 some-command)。

rev 是一个重要的过滤器示例,它将 stdin 复制到 stdout,同时反转每行中的字符。

echo 123 | rev

打印

321

rev 是一个过滤器; echo 不是。 echo 确实会打印到标准输出,因此将它放在管道的左侧是有意义的,但它不会从标准输入读取,因此在右侧使用它没有意义管道的一侧。

关于bash - 为什么这个 echo 结构不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7123671/

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