我正在编写一个Perl脚本,应该在shell中执行命令并解析它们的输出。作为shell,我打算使用csh。我已经开始了以下内容:
my $out = `cmd`
但它无法捕获标准错误输出,而我也需要。使用输出重定向运行 sh 没有任何作用。
my $out = `sh -c "cmd 2>&1"`
仍然只捕获标准输出(STDOUT),而不是标准错误(STDERR)。
即使在csh中将其重定向到文件也对我无效。
tcsh$ cmd >& logfile.log
仍然只捕获STDOUT %)
我试图执行的命令实际上是sh脚本,这个脚本中的一些命令会打印到STDERR,我想捕获这个输出。如果我执行sh -c "cmd 2>/dev/null"
,STDERR实际上会被发送到/dev/null,终端上只会打印STDOUT。
有人可以帮我解决这个问题吗?
cmd 2>logfile.log
,但即使在这种情况下,logfile.log
也是空的。我怀疑tcsh不是主要问题。 - marvin_yorke