我正在尝试实现一些我的逻辑认为无法完成的事情。但我需要你的帮助来理解为什么不能。
问题的简短版本
是否可以在不使用文件重定向( >& 或 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)“测试结束”打印在“测试开始”之前,即命令日志的出现顺序不确定。2) 如果我打算涵盖整个脚本,那么在每个语句之后放置 >>& 会很乏味。
现在有没有其他方法,我可以得到我需要的东西。也就是说,我可以在没有文件重定向的情况下运行 script1,并且仍然可以在日志文件中记录其 stdout+stderr。