免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2177 | 回复: 5
上一主题 下一主题

[文本处理] 请教exec 4<&0 再关闭0<&4 这个过程怎么理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-26 11:52 |只看该作者 |倒序浏览

在书上看个例子
#!/bin/sh
exec 4<&0 0<stock.txt
read line1
read line2
exec 0<&4
echo $line1
echo $line2

定向大概了解了 0 1 2为默认标准的3个  3-9为自选的描述符

4<&0 和exec 0<&4 再关闭 描述符4  在这个例子中起了什么作用呢?用在什么地方?

#!/bin/sh
#exec 4<&0 0<1.txt
exec 0<1.txt
read l1
read l2
#exec 0<&4
echo $l1 | tee /root/l1 > /dev/pts/1
echo $l2 | tee /root/l2 > /dev/pts/1

自己试了一下  不用这两条结果是一样

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-10-26 12:20 |只看该作者
本帖最后由 关阴月飞 于 2013-10-26 12:23 编辑

回复 1# lgrey


    描述符4,在这个例子中就是为了保存一份 0 , 以便后面恢复 0 到初始值:

举个例子:
  1. OLD_IFS="$IFS"  #保存原IFS值 类似于  exec 4<&0
  2. IFS='\n'  #重定义IFS值  类似于 0<1.txt

  3. .
  4. .
  5. .

  6. IFS=$OLD_IFS  #恢复IFS原值  类似于 exec 0<&4
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2013-10-26 12:29 |只看该作者
回复 1# lgrey
在书上看个例子
#!/bin/sh
exec 4<&0 0<stock.txt
read line1
read line2
exec 0<&4
echo $line1
echo $line2

定向大概了解了 0 1 2为默认标准的3个  3-9为自选的描述符

4<&0 和exec 0<&4 再关闭 描述符4  在这个例子中起了什么作用呢?用在什么地方?

#!/bin/sh
#exec 4<&0 0<1.txt
exec 0<1.txt
read l1
read l2
#exec 0<&4
echo $l1 | tee /root/l1 > /dev/pts/1
echo $l2 | tee /root/l2 > /dev/pts/1

自己试了一下  不用这两条结果是一样


你这两个例子,区别在于,第一个脚本恢复了0到它原来值(stdin), 而第二个脚本,0 还是从 文件1.txt 中读取输入

你可以在每个脚本后面加两句,对比一下,应该就清楚了:
  1. read line3
  2. echo $line3
复制代码

论坛徽章:
0
4
发表于 2013-10-26 12:35
本帖最后由 lgrey 于 2013-10-26 12:37 编辑

回复 3# 关阴月飞
谢谢~明白了,后面加了read 需要键盘输入就没有办法输入内容了

   

论坛徽章:
0
5 [报告]
发表于 2013-10-26 12:35 |只看该作者
回复 3# 关阴月飞


   

论坛徽章:
0
6
发表于 2013-10-26 12:35
本帖最后由 lgrey 于 2013-10-26 12:49 编辑

回复 3# 关阴月飞

谢谢~ 明白了,不关闭的话read 就无法键盘输入内容了
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP