2012-04-18 116 views
0

我想实现一些我的逻辑说不能完成的事情。但我需要你的帮助来理解为什么不可能。在日志文件中获取stdout + stderr

问题

短的版本是有可能记录标准输出+标准错误在csh的脚本,而无需使用文件重定向(> &或T恤)。


详细具体的问题

我有我在哪里不允许使用文件重定向csh脚本(SCRIPT1)要求的说明。(我会以一个理由而) 因此,这意味着我不能使用类似

echo just checking >& logfile 

所以我不能用这个还是在三通o创建我的日志文件。 我还有另一个脚本(script2),它是顶级脚本。

我可以在独立模式下或通过script2运行script1。

无论哪种情况,我都需要在日志文件中创建script1的日志(stdout + stderr)。

有针对

写两种可能(但不完全)选项,这条线在SCRIPT2

./script1 >& logfile 

但是当SCRIPT1在独立模式下运行我无法登录日志文件SCRIPT1 。

另一种选择是使用文件重定向在SCRIPT1这样的:

echo test starting >> logfile 
echo test over 

在这种情况下你两个缺点: 1)“试验过”打印之前“测试开始”,即发生的顺序的命令日志不确定。 2)如果我打算覆盖整个脚本,在每个声明之后放置>> &是很繁琐的。

现在有任何其他方式,我可以得到我所需要的。那就是我可以运行script1而无需文件重定向,并且仍然可以在日志文件中记录stdout + stderr。

+0

我不明白。你说“我不允许使用文件重定向”,但你会说“另一个选项是在脚本1中使用文件重定向”。另一个选项似乎与您不允许使用的示例完全相同。 – 2012-04-18 17:56:55

+0

我很抱歉不清楚。通过“另一个选项..”我解释了为什么我不能使用正常的文件重定向,因为它没有给出所需的输出。 如果您需要更多输入,请提示我。 – Ani 2012-04-18 18:27:27

回答

2

你提到csh,所以这可能不会帮助你。另一方面,它可能会激励你停止使用csh作为脚本,这是一个出乎意料的不恰当的任务。在SH,你可以简单地做:

#!/bin/sh 
exec > logfile 2>&1 
echo foo 

要编写foo(而输出以及所有后续命令的错误)的日志文件

+0

不幸的是我不能使用csh/tcsh以外的任何东西。 我很感谢你的回答。 那么,你的意思是说exec语句不适用于csh? – Ani 2012-04-18 18:30:51

相关问题