免费注册 查看新帖 |

Chinaunix

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

如何记录管道符左边命令的退出码?【已解决】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-23 18:14 |只看该作者 |倒序浏览
如下的代码:

1: make all | tee log
2: ???? # How to get the exit code of command 'make'?  

由于在编译的时候想看到编译进度,所以这里用了 tee, 而没用重定向。
在第二行代码处,想知道make是否成功了。
不知该如何实现?

请高手帮忙!!

[ 本帖最后由 xhx321 于 2009-5-23 23:04 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-23 18:37 |只看该作者
make && success=true

[ 本帖最后由 tianlijian 于 2009-5-23 18:39 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-05-23 18:46 |只看该作者

回复 #2 tianlijian 的帖子

现在是想把 make 的log既在屏幕上显示,有能保存到一个叫log的文件里。
然后到第2行的代码处,能知道前面 make 的退出码是什么。

论坛徽章:
0
4 [报告]
发表于 2009-05-23 19:00 |只看该作者
想实时的看进度 又想保存日志的话 用 make all | tee log
然后 tail -f log 就可以实时的看到编译进度了

还有那个状态不知道你说的是啥哦。。是 echo $?   ?吗?

论坛徽章:
0
5 [报告]
发表于 2009-05-23 19:05 |只看该作者
echo $? 返回的是上一个命令的状态码,应该是tee的,不是make的,所以建议你不用tee,>>到文件 ,然后tail -f  那个文件吧

论坛徽章:
0
6 [报告]
发表于 2009-05-23 19:09 |只看该作者

回复 #4 ztj2247 的帖子

对啊!就是$? 但它记录的是上一次命令,没什么表达式能记上上次的吧?呵呵!

论坛徽章:
0
7 [报告]
发表于 2009-05-23 19:16 |只看该作者

回复 #5 deepalley 的帖子

只是因为,在使用过程中觉得tail的方式不够直观,所以才提这个问题的!
另外,别人用这个脚本时,会看见脚本执行一段后,停在那了(make的过程中屏幕上无输出),不知道是不是脚本出错了,造成别人的误解。

论坛徽章:
0
8 [报告]
发表于 2009-05-23 19:20 |只看该作者

回复 #7 xhx321 的帖子

恩,再等等其它人有什么更好的办法,学习学习...

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2009-05-23 20:01 |只看该作者

论坛徽章:
0
10 [报告]
发表于 2009-05-23 22:56 |只看该作者

回复 #9 寂寞烈火 的帖子

The exit codes are provided in the PIPESTATUS special array.
cmd1 exit code is in ${PIPESTATUS[0]}, cmd3 exit code in
${PIPESTATUS[2]}, so that $? is always the same as
${PIPESTATUS: -1}.
问题解决,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP