exec 与文件描述符

参考http://blog.csdn.net/baoendemao/article/details/51638746 

1:用法

      exec 3<2.txt  以只读方式打开2.txt,文件描述符为3
      exec 3>2.txt  以只写方式打开2.txt,文件描述符为3
      exec 3<>2.txt  以读写方式打开2.txt,文件描述符为3
      exec 3<&-   关闭文件描述符3

 2:读取文件创建一个文件描述符   

1 [root@lile shell]# cat exec.sh 
2 #!/bin/sh
3 echo lile is good girl > input.txt
4 exec 3< input.txt    #3与< 之间不能有空格

3:创建一个文件描述符用于写

1 #!/bin/sh
2 exec 4> input2.txt
3 echo newline >&4   #>与&$之间不能有空格

4:创建一个文件描述符用于追加

1 #!/bin/sh
2 exec 5>> input3.sh   #先定义追加的符号
3 echo append line >&5    #这里使用的时候还是用>

5:例子

       1)设定变量file的值为/etc/passwd
         2)使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容
         3)把这些行保存至/tmp/mypasswd文件中

#!/bin/sh

#set variables file is /etc/passwd
#get 2 4 6 8 10 14 15 /etc/passwd show
#and echo in /tmp/passwd

file="/etc/passwd"

for I in 2 4 6 8 10 14 15
do
   exec 3>> /tmp/passwd
   username=`cat -n $file | head -$I |tail -1`
   echo $username
   echo $username >&3
done
   exec 3>&-
原文地址:https://www.cnblogs.com/lemon-le/p/5922423.html