脚本改进建议

时间:2013-02-11 20:55:55

标签: macos bash shell

以下脚本用于检查Macintosh上任何驱动器的SMART状态。

它运行良好,但我想知道是否有更优雅的方式首先列出,然后循环遍历diskutil list | grep /dev/的所有结果,因为该命令将始终列出所有连接的设备,从而使脚本便携式。

如果没有先输出到$ DISKLIST日志文件,有没有更好的方法呢?其他建议也欢迎!

# Check SMART status

DISKLIST=`mktemp -t DISK-XXXXX.log`

diskutil list | grep /dev/ > $DISKLIST

for i in  `cat $DISKLIST` ;

do

STATUS=$(diskutil info $i | awk -F': *' '/SMART/{print $2}')

if [ "$STATUS" = "Verified" ]; then
        echo "SMART Status OK for disk $i" 
else

        echo "** SMART Status $STATUS for disk $i **" 
fi

done

rm $DISKLIST

例如,这些是脚本中key命令的典型结果:

$ diskutil list | grep /dev/
/dev/disk0
/dev/disk1
/dev/disk2
/dev/disk3
/dev/disk4
/dev/disk5
/dev/disk6
/dev/disk7
/dev/disk8

1 个答案:

答案 0 :(得分:0)

你可以使用命令替换:

for i in $(diskutil list | grep /dev/)
do 
....

命令的输出直接在for循环中替换,不需要DISKLIST文件。有关详情,请参阅abs:command substitution