【发布时间】:2012-04-18 17:42:47
【问题描述】:
我正在尝试实现一些我的逻辑认为无法完成的事情。但我需要你的帮助来理解为什么不能。
问题的简短版本
是否可以在不使用文件重定向( >& 或 tee )的情况下在 csh 中记录脚本的 stdout+stderr。
问题详解
我有一个 csh 脚本 (script1) 的要求,我不允许使用文件重定向。(我稍后会给出原因) 所以这意味着我不能使用类似的东西
echo just checking >& logfile
因此我不能使用这个或 tee 来创建我的日志文件。 我还有另一个脚本 (script2),它是一个顶级脚本。
我可以在独立模式或通过 script2 运行 script1。
在任何一种情况下,我都需要在日志文件中创建 script1 的日志(stdout+stderr)。
有两个可能的(但不完整的)选项
在script2中写下这一行
./script1 >& logfile
但是当 script1 以独立模式运行时,我无法将 script1 记录到日志文件中。
另一种选择是在 script1 中使用文件重定向,如下所示:
echo test starting >> logfile
echo test over
在这种情况下,你有两个缺点: 1)“test over”在“test started”之前打印,即命令日志的出现顺序不确定。 2) 如果我打算涵盖整个脚本,那么在每个语句之后加上 >>& 会很乏味。
现在有没有其他方法,我可以得到我需要的东西。也就是说,我可以在没有文件重定向的情况下运行 script1,并且仍然可以在日志文件中记录其 stdout+stderr。
【问题讨论】:
-
我不明白。您说“我不允许使用文件重定向”,然后您说“另一种选择是在 script1 中使用文件重定向”。另一个选项似乎与您不允许使用的示例完全相同。
-
很抱歉不清楚。通过“另一个选项..”,我解释了为什么我不能使用正常的文件重定向,因为它没有给出所需的输出。如果您需要更多输入,请提示我。
标签: shell redirect stdout stderr csh