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

vcirk6k6  于 2023-11-18  发布在  Unix
关注(0)|答案(1)|浏览(195)

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标志,因为我使用Ctrl + M(这里使用-x)。但我意识到错误发生在不同的AIX服务器上。我想除了改变输出顺序之外,没有解决方案。

pobjuy32

pobjuy321#

set -x(或相应的sh -x,“xtrace”的缩写)切换到调试模式。调试模式打印出每一行执行到标准错误。从the AIX man page ofKornShell(可执行ksh):

-x
     Prints executed commands and their arguments.

字符串
这就是为什么你在日志文件中看到一些捕获标准错误的东西。

相关问题