更新时间:2023-01-04 11:45:51
您可以使用backtics执行外部程序并捕获其stdout
和stderr
.
You can use the backtics to execute your external program and capture its stdout
and stderr
.
默认情况下,反引号丢弃stderr
并仅返回外部程序的stdout
.
By default the backticks discard the stderr
and return only the stdout
of the external program.So
$output = `cmd`;
将捕获程序cmd的stdout
并丢弃stderr
.
Will capture the stdout
of the program cmd and discard stderr
.
要仅捕获stderr
,可以将Shell的文件描述符用作:
To capture only stderr
you can use the shell's file descriptors as:
$output = `cmd 2>&1 1>/dev/null`;
要同时捕获stdout
和stderr
,您可以执行以下操作:
To capture both stdout
and stderr
you can do:
$output = `cmd 2>&1`;
使用以上内容,您将无法区分stderr
和stdout
.要从stderr
中分离stdout
,可以将它们都重定向到一个单独的文件并读取文件:
Using the above you'll not be able to differenciate stderr
from stdout
. To separte stdout
from stderr
can redirect both to a separate file and read the files:
`cmd 1>stdout.txt 2>stderr.txt`;