#!/bin/sh
exec 4<&0 0<readfile
read line1
read line2
exec 0<&4
echo $line1
echo $line2
上面的脚本,在readfile重定向到0描述符前,为什么需要4<&0。如果不这么做,有什么缺陷?
注:下面的脚本输出的结果也一样。
#!/bin/sh
exec 0<readfile
read line1
read line2
echo $line1
echo $line2
输入重定向疑惑,请各位指点。
-
- 帖子: 44
- 注册时间: 2007-04-29 13:15
-
- 帖子: 18311
- 注册时间: 2008-01-09 22:41
Re: 输入重定向疑惑,请各位指点。
exec 4<&0 0< name.txt 执行了两个「动作」: 首先, 把文件描述符 0 (标准输入 stdin,一般指键盘) 复制 (duplicate) 到描述符 4 (效果上是把 0 做了个备份), 然后, 用描述符 0 打开 stock.txt.这个时候 stdin 就从 stock.txt 读数据了, 因此后面的 read 就是 name.txt.
--
exec 0<&4 把前面备份的描述符 4 复制回 0, 其实就是恢复了从键盘读数据
如果将上面的 exec 0<&4 换成 exec 0<&4- , 这不但恢复了 stdin, 而且还把临时使用的描述符 4 给 close 掉了
http://www.groad.net/bbs/simple/?t482.html
--
exec 0<&4 把前面备份的描述符 4 复制回 0, 其实就是恢复了从键盘读数据
如果将上面的 exec 0<&4 换成 exec 0<&4- , 这不但恢复了 stdin, 而且还把临时使用的描述符 4 给 close 掉了
http://www.groad.net/bbs/simple/?t482.html
- astolia
- 论坛版主
- 帖子: 6703
- 注册时间: 2008-09-18 13:11