我正在尝试使用 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
您正在比较静态字符串status
与error
。
有几种方法可以实现这一点。要将命令的输出捕获到变量中,请使用
STATUS=`monit status`
或者
STATUS=$(monit status)
对于像你这样的简单情况,我会选择一个简单的
if monit status | grep -q error ; then
...
fi