分页: 1 / 1

请问如何重定向sh -x *.sh的调试信息到文本文件?

发表于 : 2012-02-19 20:58
zwdnet
我想调试一个别人写的电脑休眠的脚本程序,以前用得蛮好,升级内核到3.2.6以后,休眠就经常失败,表现就是在休眠进行到某一个阶段的时侯就没有反应,开几个小时都没有反应,只能强行关机。我想用sh -x XXX.sh输出每一步执行的命令,然后就可以知道出错的时侯是执行到哪里了,但是因为是休眠脚本程序,而且很长,直接把结果输出到终端不方便看,我想输出到文本文件里,可是不知道怎么办。说了这么多,我给个例子吧:
这是测试用的脚本文件:

代码: 全选

#!/bin/sh
echo '1'
echo '2'
echo '3'
exit 0
直接执行该脚本的结果为:

代码: 全选

zym@zym-freedom:~/下载$ ./test.sh
1
2
3
用调试模式执行:

代码: 全选

zym@zym-freedom:~/下载$ sh -x ./test.sh
+ echo 1
1
+ echo 2
2
+ echo 3
3
+ exit 0
如果用输出重定向来执行:

代码: 全选

zym@zym-freedom:~/下载$ sh -x ./test.sh > debug.txt
+ echo 1
+ echo 2
+ echo 3
+ exit 0
而这个时侯debug.txt文件的内容为:

代码: 全选

1
2
3
而我期待的debug.txt文件的内容为:

代码: 全选

+ echo 1
+ echo 2
+ echo 3
+ exit 0
请问该如何执行?谢谢!

Re: 请问如何重定向sh -x *.sh的调试信息到文本文件?

发表于 : 2012-02-19 21:49
hmk913

代码: 全选

sh -x ./test.sh >& debug.txt
你试试。。

Re: 请问如何重定向sh -x *.sh的调试信息到文本文件?

发表于 : 2012-02-19 23:01
zwdnet
hmk913 写了:

代码: 全选

sh -x ./test.sh >& debug.txt
你试试。。

代码: 全选

+ echo 1
1
+ echo 2
2
+ echo 3
3
+ exit 0
呵呵,不错,谢谢!