Bash if语句等于上一个命令的输出

我试图从最后一个命令与bash相等的东西如果声明:

#!/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输出的monit status

您正在比较静态stringstatuserror

有几种方法可以解决这个问题。 为了捕获variables中命令的输出,使用

 STATUS=`monit status` 

要么

 STATUS=$(monit status) 

对于一个简单的情况下,我会去一个简单的

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