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

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

答案1

您正在比较静态字符串statuserror

有几种方法可以实现这一点。要将命令的输出捕获到变量中,请使用

STATUS=`monit status`

或者

STATUS=$(monit status)

对于像你这样的简单情况,我会选择一个简单的

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

相关内容