我正在编写一个 Perl 脚本,它应该在 shell 中执行命令并解析它们的输出。作为一个shell,我打算使用csh。我从这个开始
my $out = `cmd`
但它没有捕获我也需要的 STDERR。使用输出重定向运行 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 打印在终端中。
谁能帮我解决这个问题?