如何将输出从交互式perl脚本重定向到文件和控制台?

时间:2014-06-23 09:07:09

标签: perl unix csh

我有一个复杂的交互式脚本,使用版本控制软件(clearcase)。即用户选择控制台中建议的选项。应该执行脚本(具有交互性并输出到控制台),并且应该将该脚本的整个输出保存到文件中以供进一步处理。 例如,行

perlscript | tee output.tmp

显示来自perl脚本的前两个printOut,然后(可能在从版本控制系统中提取信息时)执行停止(没有任何反应)并且没有任何内容写入文件。 我用csh。 我不能改变perl脚本。你必须在csh中做到这一点。 也许这可以通过额外的perl脚本来完成。

2 个答案:

答案 0 :(得分:1)

您可以使用script命令捕获整个会话的日志。

只需输入:

 script <logfilename> 

正常运行脚本之前。完成类型exit以关闭日志文件后。

如果要将其合并到脚本中,可以创建一个包装脚本来运行它:

#!/bin/bash
script "My_logfile" my_script

这将创建日志文件并运行my_script。当脚本结束时,日志文件将被关闭。

答案 1 :(得分:-2)

我认为如果您无法更改脚本,则需要使用包装器将STDOUT覆盖到文件中。

#! /usr/bin/perl
my $file = "out.txt";
open STDOUT, ">$file";
system("your perlscript");
相关问题