免费注册 查看新帖 |

Chinaunix

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

关于exec [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-28 14:28 |只看该作者 |倒序浏览
exec都能干什么?
能操作 fd 之外一般什么情况下用到了
呵呵 能不能举两个例子啊 不太懂

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2007-11-28 14:47 |只看该作者
加载别的程序
比如用多个解释器解析一个脚本的不同部分

论坛徽章:
0
3 [报告]
发表于 2007-11-28 15:03 |只看该作者
原帖由 waker 于 2007-11-28 14:47 发表
加载别的程序
比如用多个解释器解析一个脚本的不同部分


用exec的话 自身脚本不会结束?
某脚本
...
....
......
...
..
exec ....
...
...
...
如果 到exec那行切换 解释器
脚本exec以后的命令 ?哪里去了?

...我先man下

论坛徽章:
0
4 [报告]
发表于 2007-11-28 15:08 |只看该作者
原帖由 waker 于 2007-11-28 14:47 发表
用多个解释器解析一个脚本的不同部分


可否举个例子,不太明白,谢谢  

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2007-11-28 15:22 |只看该作者

  1. [waker@proxy ~]$ cat 1.sh
  2. #! /bin/bash
  3. # \
  4. echo 'The 1st line print from bash';\
  5. exec tclsh $0
  6. puts {The 2nd line print from tclsh}
  7. [waker@proxy ~]$ ./1.sh
  8. The 1st line print from bash
  9. The 2nd line print from tclsh
  10. [waker@proxy ~]$
复制代码

论坛徽章:
0
6 [报告]
发表于 2007-11-28 15:28 |只看该作者
我想在expect脚本中获取主机名
set HOSTNAME [.....]
请问有什么办法可以在expect脚本中调用系统的hostname这个命令,并将返回值赋给HOSTNAME这个变量呢?

exec hostname


这个是?

论坛徽章:
0
7 [报告]
发表于 2007-11-28 15:49 |只看该作者
原帖由 waker 于 2007-11-28 15:22 发表

[waker@proxy ~]$ cat 1.sh
#! /bin/bash
# \
echo 'The 1st line print from bash';\
exec tclsh $0
puts {The 2nd line print from tclsh}
[waker@proxy ~]$ ./1.sh
The 1st line print from bash
...


算是长见识了,看了半天才明白,从未想过如此来写程序,佩服

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2007-11-28 16:01 |只看该作者

回复 #7 seeLnd 的帖子

这利用了bash和tclsh对 \处理的不同,
它有两个好处
1.只要tclsh在$PATH里就能运行了,不管是在/bin还是/usr/bin或是其它地方,这种方式比#!path2tclsh更灵活
2.exec可以加数量更多的参数而#!不能,

论坛徽章:
0
9 [报告]
发表于 2007-11-28 16:02 |只看该作者
原帖由 waker 于 2007-11-28 15:22 发表

[waker@proxy ~]$ cat 1.sh
#! /bin/bash
# \
echo 'The 1st line print from bash';\
exec tclsh $0
puts {The 2nd line print from tclsh}
[waker@proxy ~]$ ./1.sh
The 1st line print from bash
...


我觉得此程序能执行成功还得依赖于 bash 对注释中的 escape character 视而不见,而 tclsh 却要相反才行

论坛徽章:
0
10 [报告]
发表于 2007-11-28 16:04 |只看该作者
原帖由 waker 于 2007-11-28 16:01 发表
这利用了bash和tclsh对 \处理的不同,
它有两个好处
1.只要tclsh在$PATH里就能运行了,不管是在/bin还是/usr/bin或是其它地方,这种方式比#!path2tclsh更灵活
2.exec可以加数量更多的参数而#!不能,


谢谢waker的耐心解释,受教了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP