grep stderr и stdout предыдущей команды - PullRequest
0 голосов
/ 26 июня 2019

В скрипте bash мне нужно проверить сообщения stderr и stdout команды 1 и запустить команду 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 голосов
/ 26 июня 2019

Перенаправить вывод команды 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
...