首页 > 解决方案 > stderr 和 stdout 的顺序不同会产生问题

问题描述

在 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 服务器中。我想除了改变输出的顺序之外没有其他解决方案。感谢您的意见!!!!

标签: unixshkshaix

解决方案


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

   -x
        Prints executed commands and their arguments.

这就是为什么您会在日志文件中看到捕获 .


推荐阅读