LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 982|回复: 0

请教:exec 文件描述符问题

[复制链接]
发表于 2007-10-22 10:03:53 | 显示全部楼层 |阅读模式
1 #!/bin/bash
  2 # 使用'exec'重定向stdin.
  3
  4
  5 exec 6<&0          # 将文件描述符#6与stdin链接起来.
  6                    # 保存stdin.
  7
  8 exec < data-file   # stdin被文件"data-file"所代替.
  9
10 read a1            # 读取文件"data-file"的第一行.
11 read a2            # 读取文件"data-file"的第二行.
12
13 echo
14 echo "Following lines read from file."
15 echo "-------------------------------"
16 echo $a1
17 echo $a2
18
19 echo; echo; echo
20
21 exec 0<&6 6<&-
22 #  现在将stdin从fd #6中恢复, 因为刚才我们把stdin重定向到#6了,
23 #+ 然后关闭fd #6 ( 6<&- ), 好让这个描述符继续被其他进程所使用.
24 #
25 # <&6 6<&-    这么做也可以.
26
27 echo -n "Enter data  "
28 read b1  # 现在"read"已经恢复正常了, 就是能够正常的从stdin中读取.
29 echo "Input read from stdin."
30 echo "----------------------"
31 echo "b1 = $b1"
32
33 echo
34
35 exit 0
在上面这段shell里,如果不使用6这个文件描述符,同样可以做到把2行读出的功能。
这里就有一点疑问,在这里用文件描述符有什么好处,为啥要用。
先谢过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表