unix - 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 服务器中。我想除了改变输出的顺序之外没有其他解决方案。感谢您的意见!!!!
解决方案
set -x
(或相应sh -x
的,“xtrace”的缩写)打开调试模式。调试模式打印出执行到的每一行。从 ksh 的 AIX 手册页:
-x
Prints executed commands and their arguments.
这就是为什么您会在日志文件中看到捕获 .
推荐阅读
- c# - 提取我的应用程序的每个 XAML 页面的确切内容
- android - 如何为 png 或 svg 沿轮廓绘制阴影?
- javascript - JavaScript test() 方法改变返回值
- javascript - 从 json 数据中删除特定或选定的属性。我不想只删除具有 Category :null 的所有键值对
- javascript - 在 JavaScript 中单击另一个手风琴时删除活动的手风琴
- ios - UICollectionViewCell - 将不同的 CAGradientLayer 应用于不同的 UIView
- kubernetes - 如何在 openshift 中获取最新部署的修订版?
- java - Tomcat7 SESSIONID在应用redis RedisSessionManager应用后不断变化
- windows - 如何停止文件资源管理器运行?
- java - 从 ExternalFilesDir 访问时出现随机 Permission Denied 错误