grep stderr和先前命令的stdout

时间:2019-06-26 01:42:02

标签: bash boolean stdout rhel stderr

在bash脚本中,如果在消息中找到了字符串,我需要检查命令1的stderr和stdout消息并运行命令2

类似:

command 1

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

command 2

fi

1 个答案:

答案 0 :(得分:0)

将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