grep stderr 和上一个命令的 stdout

grep stderr and stdout of previous command

在 bash 脚本中,如果在消息

中找到字符串,我需要检查命令 1 和 运行 命令 2 的 stderr 和 stdout 消息

类似于:

command 1

if [ $? != 0 ] and grep stderr and stdout of command 1 and if it contains hello world; then run

command 2

fi

将 command1 的输出重定向到一个文件,然后使用 grep 检查文件是否包含字符串 'hello world'

command1 > /tmp/stdout.$$ 2>/tmp/stderr.$$
if [ $? -ne 0 ] && grep 'hello world' /tmp/stdout.$$ /tmp/stderr; then
    command2;
fi

您还可以使用“2>&1”语法将文件描述符 2 (stderr) 重定向到文件描述符 1 (stdout)。

command1 > /tmp/stdout-stderr.$$ 2>&1
if [ $? -ne 0 ] && grep 'hello world' /tmp/stdout-stderr.$$; then
    command2;
fi