我在我的脚本中使用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不是
答案 0 :(得分:1)
不,它没有意义。
使用2>&2
,您将文件描述符2(stderr)重定向到与文件描述符2关联的资源。因此,您不会更改任何内容,只需将stderr重定向到已经定向的位置到。
stderr的默认资源是终端,这就是为什么stderr输出仍显示在终端上。