linux系统每个对像当做文件来处理。这包括输入和输出的过程。linux用文件描述来标识每个文件对象。文件描述符是一个非负整数,可以唯一地标识会话中打开的文件。每个过程一次最多可以有9个文件描述符。出于特殊目的。bash shell保留了最早的3个文件描述符{0,1,2}分别对应{STDIN,STDOUT,STDERR}表示为标准输入、标准输出、标准错误。我们先来一段代码看看
1 #!/bin/bash
2 exec 3>&1 创建文件描述符3取stdin的值,也就是说所有重定向3的都
将在显示器上显示
3 exec 1>inputfile 创建输入重定向到inputfile中
4 exec 2>errorfile 创建stderror指向的文件
5 echo "this is a mao shu fu" 这一句是输入,输出到inputfile文件中
6 echo "look at this example" 这一句同上
7 echo "this is error1" >&2 这一句指定到错误的文件夹中,这里是指errorfile
8 echo "this is error2" >&2 这一句同上
9 exec 1>&3 文件描述3本来指 stdin也就是显示
器,1本来指向的文件,这语句也
就是说让1重新指向显示器,这样
以后的echo就会显示出来,要不
然显示的在inputfile文件中
10 exec 5<&0
11 exec 0<errorfile
12 while read line
13 do
14 echo "this is errorfile content $line" 这句能输出在显示器上,全靠第9句
15 done
16 exec 0<&5
17 echo "the script end" 这句能输出在显示器上,也靠第9句