2015-06-24 184 views
1

我有一個bash腳本來檢查我們的RAID系統的狀態。Bash腳本無法識別命令結果

#!/bin/bash 
[email protected] 

zpool status -x | grep 'all pools are healthy' 

if [ $? -ne 0 ]; then 
    /bin/date > /tmp/zfs.stat 
    echo >> /tmp/zfs.stat 
    /bin/hostname >> /tmp/zfs.stat 
    echo >> /tmp/zfs.stat 
    /sbin/zpool status -x >> /tmp/zfs.stat 
    cat /tmp/zfs.stat | /usr/bin/mail -s "Disk failure in server : `hostname`" $EMAIL_ADD 
fi 

當我手動運行腳本它的作品,所以我決定運行這個腳本作爲一個cronjob。但是cronjobs每次都會發送郵件。我真的希望你能幫我解決這個問題。

回答

0

使用$?測試退出狀態不是一個好的做法,因爲更多的信息去testing exit value。你應該用命令(使用zpool ...)取代你,如果條件如下:

if ! zpool status -x | grep 'all pools are healthy';then 
... 
fi