Назад | Перейти на главную страницу

Bash if оператор равен выходу из последней команды

Я пытаюсь сравнить что-то из последней команды с помощью оператора bash if:

#!/bin/bash

monit status

if [ "status" != "error" ]; then
        echo -e "hostname\ttest\t0\t0" | /usr/sbin/send_nsca -H hostname -c /etc/send_nsca.cfg
        exit 1;
fi

Даже если monit status выдает status = online with all services он запускает команду echo. Не могу понять, как сделать if заявление соответствует статусу monit status вывод.

Вы сравниваете статические строки status vs. error.

Есть несколько способов сделать это. Чтобы записать вывод команды в переменную, используйте

STATUS=`monit status`

или

STATUS=$(monit status)

В таком простом случае, как ваш, я бы выбрал простой

if monit status | grep -q error ; then
    ...
fi