Chinaunix首页 | 论坛 | 博客
  • 博客访问: 393016
  • 博文数量: 119
  • 博客积分: 1796
  • 博客等级: 上尉
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 10:16
个人简介

守正

文章分类
文章存档

2013年(1)

2011年(40)

2010年(78)

分类: LINUX

2010-06-09 14:59:44

今天调试一个bash,要把屏幕的输出结果存到log文件中,开始输入
   $bash -x ./test.sh  > log
结果发现log里只存放了程式的执行结果,后来在cu的一篇帖子里 /viewthread.php?tid=264380&highlight=bash得到了启发, bash -x的调试信息是输出到2号流中的,所以解决方案为
bash -x ./test.sh  2>&1 | tee log
想起以前要存放执行make的结果时也遇见类似问题,总结如下:
1、管道符的" | "的作用只是把前一个程式的标准输出流(stdout)的数据 作为后一个程式 的标准输入流stdin的数据,如不进行重定向,则其他输出流的信息是无法传给后面的程式的
2、屏幕得到的信息不一定是从程式的标准输出来的,也包括标准错误输出流stderr中的信息
3、有些程式(特别是象bash 、make这样执行了其他程式的程式)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程式本身并无错误),而stdout用来输 出被调用程式的执行时信息,造成了用户的误解
阅读(2588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~