Bash se declaração igual a saída do último comando

1

Eu estou tentando igualar algo do último comando com o bash if statement:

#!/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

Mesmo se o monit status fornecer status = online with all services , ele executará o comando echo. Não consigo descobrir como fazer com que a instrução if corresponda ao status de monit status output.

    
por mYzk 02.06.2014 / 16:04

1 resposta

1

Você está comparando as strings estáticas status vs. error .

Existem várias maneiras de fazer isso. Para capturar a saída do comando em uma variável, use

STATUS='monit status'

ou

STATUS=$(monit status)

Para um caso simples como o seu, gostaria de um simples

if monit status | grep -q error ; then
    ...
fi
    
por 02.06.2014 / 16:26