2013-02-11 71 views
-1

以下腳本用於檢查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 

作爲一個例子,這些是從密鑰命令在腳本典型結果:

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

請嘗試codereview網站。我們在這裏幫助解決問題,而不是批判/改進代碼。 – 2013-02-11 20:57:07

回答

0

可以使用命令替換,以便:

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

命令的輸出是在for循環中直接替換,不需要DISKLIST文件。關於此的更多信息abs:command substitution

+0

真棒,謝謝!我很高興我問。 – Dan 2013-02-11 21:19:45