Chinaunix

标题: 如何记录管道符左边命令的退出码?【已解决】 [打印本页]

作者: xhx321    时间: 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 编辑 ]
作者: tianlijian    时间: 2009-05-23 18:37
make && success=true

[ 本帖最后由 tianlijian 于 2009-5-23 18:39 编辑 ]
作者: xhx321    时间: 2009-05-23 18:46
标题: 回复 #2 tianlijian 的帖子
现在是想把 make 的log既在屏幕上显示,有能保存到一个叫log的文件里。
然后到第2行的代码处,能知道前面 make 的退出码是什么。
作者: ztj2247    时间: 2009-05-23 19:00
想实时的看进度 又想保存日志的话 用 make all | tee log
然后 tail -f log 就可以实时的看到编译进度了

还有那个状态不知道你说的是啥哦。。是 echo $?   ?吗?
作者: deepalley    时间: 2009-05-23 19:05
echo $? 返回的是上一个命令的状态码,应该是tee的,不是make的,所以建议你不用tee,>>到文件 ,然后tail -f  那个文件吧
作者: xhx321    时间: 2009-05-23 19:09
标题: 回复 #4 ztj2247 的帖子
对啊!就是$? 但它记录的是上一次命令,没什么表达式能记上上次的吧?呵呵!
作者: xhx321    时间: 2009-05-23 19:16
标题: 回复 #5 deepalley 的帖子
只是因为,在使用过程中觉得tail的方式不够直观,所以才提这个问题的!
另外,别人用这个脚本时,会看见脚本执行一段后,停在那了(make的过程中屏幕上无输出),不知道是不是脚本出错了,造成别人的误解。
作者: deepalley    时间: 2009-05-23 19:20
标题: 回复 #7 xhx321 的帖子
恩,再等等其它人有什么更好的办法,学习学习...
作者: 寂寞烈火    时间: 2009-05-23 20:01
http://bbs.chinaunix.net/viewthr ... p;page=1#pid3647972
作者: xhx321    时间: 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}.
问题解决,谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2