【发布时间】:2023-07-11 15:55:01
【问题描述】:
我正在编写一个 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。
谁能帮我解决这个问题?
【问题讨论】:
-
我尝试运行 sh shell 并执行
cmd 2>logfile.log但即使在这种情况下logfile.log也是空的。我怀疑 tcsh 不是这里的主要问题
标签: perl shell redirect csh tcsh