小编qye*_*cst的帖子

`{ echo err >&2; 和有什么区别?回显>&1; } | :` 和 `{ 回显 >&1; 回显错误>&2; } | :` 在 Bash 中?

为什么命令可以{ echo err >&2; echo out >&1; } | :打印“err”,而第二个命令却不能?

容器中的一些测试:

  • Debian:11.5(bash/5.1.4)
  • 洛基 Linux:9.0(bash/5.1.8),
  • CentOS:1908 年 7 月 7 日(bash/4.2.46),
  • CentOS:8.4.2105(bash/4.4.19)。

这也发生在主机 CentOS 8.0.1905、Debian 11.4 中。

~# { echo err >&2; echo out >&1; } | :
err
~# { echo out >&1; echo err >&2; } | :
~#
Run Code Online (Sandbox Code Playgroud)

不使用:似乎是正确的:

~# { echo out >&1; echo err >&2; } | sed 's/.*/-&-/'
err
-out-
~#
Run Code Online (Sandbox Code Playgroud)

但在另一台主机CentOS 7.7.1908(bash/4.2.46)中打印:

~# { echo out >&1; …
Run Code Online (Sandbox Code Playgroud)

shell bash pipe command

5
推荐指数
1
解决办法
446
查看次数

标签 统计

bash ×1

command ×1

pipe ×1

shell ×1