84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
例如一个脚本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 调试模式