Você pode usar o status de retorno do grep.
systemctl status asd.service | grep 'active' \
&& status=active \
|| status=not_active
if [ "$status" == "active" ]; then
[...]
fi
ou ainda mais fácil:
test $(systemctl status asd.service | grep 'active') \
&& echo "$SERVICE was active"
ou se preferir if
:
if $(systemctl status asd.service | grep 'active'); then
echo "$SERVICE was active"
fi
De qualquer forma, tenha cuidado com as palavras-chave inactive
, not active
, active (exited)
ou similares. Isso também corresponderá à sua declaração grep
. Veja os comentários. Obrigado @ Terrance pela dica.
Atualização:
Não há necessidade de grep. systemctl
tem o comando is-active
incluído.
systemctl -q is-active asd.service \
&& echo "$SERVICE was active"
ou:
if systemctl -q is-active asd.service; then
echo "is active";
fi