说个简单的例子,今天有为同学需要有需求,需要将错误输出到文件,其它的正常的数据直接输出到屏幕,则可以这样实现
LOG=./test.log
exec 3>&1 4>&22>>$LOG 1>>$LOG
echo aaa
exec 1>&3 2>&4
echo bbb
记忆方法:
原来我自己也认为是将3输出到标准输出,但是这样没有意义啊。其实这里你需要这么去理解,即文件描述符3被赋值为标准输出
这里可以这样实验一下:
LOG=./test.log
exec 3>&1 4>&2 2>>$LOG 1>>$LOG
echo aaa
echo ccc>&3
exec 1>&3 2>&4
echo bbb
可以看到ccc被正常输出,所以最后在执行exec 1>&32>&4的时候可以理解为文件描述符1被文件描述符3替换
这样就完成了重定向在一个脚本里面的开启或关闭