stderr 和 stdout 的顺序差异会产生问题

问题描述 投票:0回答:1

在 AIX 中,当我编写这样的脚本(test.sch)时:

#!/bin/ksh
echo "testing" 2>./r1.log 1>./r2.log
exit 0

如果我执行:

sh -x test.sch

回复是:

cat r1.log
1> ./r2.log
cat r2.log
testing

为什么 r1.log 出现在命令中?

但是如果我改变 shell 中的顺序:

#!/bin/ksh
echo "testing" 1>./r2.log 2>./r1.log
exit 0

文件 r1.log 为空。

cat r1.log
cat r2.log
testing

此代码在其他服务器上运行良好。我必须修复什么配置才能使其正常工作?

总结

不能省略-x标志,因为我使用control-m(这里使用-x)。但我意识到该错误发生在不同的 AIX 服务器上。我想除了改变输出的顺序之外没有解决方案。

unix sh ksh aix
1个回答
0
投票

set -x
(或相应的
sh -x
,“xtrace”的缩写)打开调试模式。调试模式打印出执行到 .来自 ksh 的 AIX 手册页:

   -x
        Prints executed commands and their arguments.

这就是为什么您会在日志文件中看到捕获的内容。

© www.soinside.com 2019 - 2024. All rights reserved.