免费注册 查看新帖 |

Chinaunix

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

exec命令的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-19 15:13 |只看该作者 |倒序浏览
本帖最后由 020794 于 2010-06-19 15:26 编辑

想在当前shell中,将stdin重定向到文件file,以便之后从file里逐行read

于是,先执行

exec < file

但是结果是shell退出了。。。

本人系统为ubuntu,求解。

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
2 [报告]
发表于 2010-06-19 15:36 |只看该作者
exec是shell的一个built-in command,一般用来execute某个command,然后退出该command,注意这里不是fork一个子shell,然后用该子shell来执行command,而是在当前shell上直接执行该command,所以command退出后,该shell也就结束了。

exec的另外一个功能是打开和关闭文件描述符.

你的格式写错了吧 你没有把文件指向某个文件描述符

论坛徽章:
0
3 [报告]
发表于 2010-06-19 15:52 |只看该作者
但是《高级Bash脚本编程指南》怎么是这样写的?

-----------------------------------------------------------------------------------

16.1. 使用exec
--------------
exec <filename 命令会将stdin 重定向到文件中. 从这句开始, 后边的输入就都来自于这个文
件了, 而不是标准输入了(通常都是键盘输入). 这样就提供了一种按行读取文件的方法, 并且
可以使用 sed 和/或 awk 来对每一行进行分析.

Example 16-1 使用exec 重定向标准输入
################################Start
Script#######################################
1 #!/bin/bash
2 # 使用'exec'重定向标准输入.
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
################################End
Script#########################################
同样的, exec >filename 命令将会把stdout 重定向到一个指定的文件中. 这样所有的命令输
出就都会发向那个指定的文件, 而不是stdout.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP