Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 2>&2有意义吗?如果是,它有什么作用?_Bash - Fatal编程技术网

Bash 2>&2有意义吗?如果是,它有什么作用?

Bash 2>&2有意义吗?如果是,它有什么作用?,bash,Bash,我在脚本中使用了2>&2,希望stderr不会显示在终端上,而是重定向到/dev/fd/。错误仍然显示在终端上。我的理解有问题吗? 谢谢 编辑: 我想将标准错误重定向到日志文件以及终端上 这是通过点击和试用来实现的 exec 2> >(while read -r line; do printf '%s %s\n' "$(date --rfc-3339=seconds)" "$line" | tee -a $LOG_FILE; done >&2) 但事实并非如此 exe

我在脚本中使用了2>&2,希望stderr不会显示在终端上,而是重定向到/dev/fd/。错误仍然显示在终端上。我的理解有问题吗? 谢谢

编辑: 我想将标准错误重定向到日志文件以及终端上

这是通过点击和试用来实现的

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不起作用。不,它没有意义

使用2>&2,可以将文件描述符2 stderr重定向到与文件描述符2关联的资源。所以,您不需要更改任何内容,只需将stderr重定向到它已经指向的位置


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

这意味着您正在将bash错误重定向到stderr。。。你在这里什么都没做。尝试2>并阅读:那么为什么它会显示在终端上?应该重定向到标准错误?这是从终端运行时的标准错误。您试图实现什么?