例如一个脚本dumb.sh的内容为
#! /bin/bash
idx=1
echo $idx
/bin/bash -x dumb.sh的结果为:
+idx=1
+echo 1
1
而且/bin/bash -x dumb.sh > trace.log后,trace.log内容仅为:
1
有什么办法将/bin/bash -x dumb.sh的整个结果保存下来么?
例如一个脚本dumb.sh的内容为
#! /bin/bash
idx=1
echo $idx
/bin/bash -x dumb.sh的结果为:
+idx=1
+echo 1
1
而且/bin/bash -x dumb.sh > trace.log后,trace.log内容仅为:
1
有什么办法将/bin/bash -x dumb.sh的整个结果保存下来么?
在man bash手册中章节:CONDITIONAL EXPRESSIONS
,-x
的意思是:
-x file
True if file exists and is executable.
参数-x
会列出shell执行语句的顺序并将其打印。+echo 1
这种语句并不是脚本的输出,所以不能将其保存到文件中。
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答794 阅读✓ 已解决
2 回答3.2k 阅读
处理方法:
原因:
用strace跟踪一下
结果:
可以看出+idx=1和+echo1是write(2,),这个是标准错误输出,虽然打屏幕,但是>默认不会把这个内容写入文件。
如下这个命令可以把标准错误重定向到1中