Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1260728
  • 博文数量: 264
  • 博客积分: 10772
  • 博客等级: 上将
  • 技术积分: 2325
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-25 11:54
文章分类

全部博文(264)

文章存档

2012年(4)

2011年(51)

2010年(31)

2009年(57)

2008年(51)

2007年(70)

分类: LINUX

2007-11-07 00:20:10

今天调试一个bash,要把屏幕的输出结果存到log文件中,开始输入

$bash -x ./test.sh > log

结果发现log里只存放了程序的执行结果,后来在cu的一篇帖子里得到了启发, bash -x的调试信息是输出到2号流中的,所以解决方案为

bash -x ./test.sh 2>&1 | tee log

想起以前要存放执行make的结果时也遇到类似问题,总结如下:

1、管道符的" | "的作用只是把前一个程序的标准输出流(stdout)的数据 作为后一个程序 的标准输入流stdin的数据,如不进行重定向,则其他输出流的信息是无法传给后面的程序的

2、屏幕得到的信息不一定是从程序的标准输出来的,也包括标准错误输出流stderr中的信息

3、有些程序(特别是象bash 、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,造成了用户的误解

阅读(1955) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~