2>& 2有意义吗?如果是这样,它会做什么?

时间:2017-06-21 05:52:25

标签: bash

我在我的脚本中使用2>& 2并且期望stderr不会显示在终端上并被重定向到/ dev / fd /。错误仍显示在终端上。我的理解有问题吗? 感谢。

修改 我想将标准错误重定向到logfile以及终端。

这很好(通过点击和试用发现)

exec 2> >(while read -r line; do printf '%s %s\n' "$(date --rfc-3339=seconds)" "$line" | tee -a $LOG_FILE; done >&2)

但这不是

exec 2> >(while read -r line; do printf '%s %s\n' "$(date --rfc-3339=seconds)" "$line" | tee -a $LOG_FILE; done) 

我想了解>& 2执行的命令1是什么,但命令2不是

1 个答案:

答案 0 :(得分:1)

不,它没有意义。

使用2>&2,您将文件描述符2(stderr)重定向到与文件描述符2关联的资源。因此,您不会更改任何内容,只需将stderr重定向到已经定向的位置到。

stderr的默认资源是终端,这就是为什么stderr输出仍显示在终端上。