正在使用echo重定向文件描述符



为什么

echo 'foo' 1>&2 2>/dev/null

给出输出?foo被重定向到文件描述符2,文件描述符2被重定向到/dev/null。应该没有输出?

这是关于重定向的顺序。当bash看到几个重定向时,它会从左到右处理它们。

stdout的第一个重定向重定向到stderr(tty)的当前值。当stderr更改为/dev/null时,stdout仍然写入stderrs的前一个输出(tty)。

改变他们的位置,就会奏效。

echo 'foo' 2>/dev/null 1>&2

有关更多详细信息,请参阅http://www.catonmat.net/blog/bash-one-liners-explained-part-three/

相关内容

  • 没有找到相关文章

最新更新