84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
例如一个脚本dumb.sh的内容为
#! /bin/bash idx=1 echo $idx
/bin/bash -x dumb.sh的结果为:
+idx=1+echo 11
而且/bin/bash -x dumb.sh > trace.log后,trace.log内容仅为:
1
有什么办法将/bin/bash -x dumb.sh的整个结果保存下来么?
处理方法:
/bin/bash -x dump.sh > trace.log 2>&1
原因:用strace跟踪一下
strace /bin/bash -x dump.sh
结果:
write(2, "+ idx=1\n", 8+ idx=1 ) = 8 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 write(2, "+ echo 1\n", 9+ echo 1 ) = 9 write(1, "1\n", 21 ) = 2 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 read(255, "", 29) = 0 exit_group(0) = ?
可以看出+idx=1和+echo1是write(2,),这个是标准错误输出,虽然打屏幕,但是>默认不会把这个内容写入文件。如下这个命令可以把标准错误重定向到1中
/bin/bash -x dump.sh > aa 2>&1
在man bash手册中章节:CONDITIONAL EXPRESSIONS,-x的意思是:
CONDITIONAL EXPRESSIONS
-x
-x file True if file exists and is executable.
参数-x会列出shell执行语句的顺序并将其打印。+echo 1这种语句并不是脚本的输出,所以不能将其保存到文件中。
+echo 1
-x 调试模式
处理方法:
原因:
用strace跟踪一下
结果:
可以看出+idx=1和+echo1是write(2,),这个是标准错误输出,虽然打屏幕,但是>默认不会把这个内容写入文件。
如下这个命令可以把标准错误重定向到1中
在man bash手册中章节:
CONDITIONAL EXPRESSIONS
,-x
的意思是:参数
-x
会列出shell执行语句的顺序并将其打印。+echo 1
这种语句并不是脚本的输出,所以不能将其保存到文件中。-x 调试模式