以下は、ディスクの SMART ステータスをチェックする日次レポート スクリプトのスニペットです。
$STATUS の完全な値を「else」句に出力したいのですが、現在は最初の単語 ($3) だけに切り詰めています。
どうすればこれを克服できますか?
echo "SMART STATUS" >> $LOGS
echo "--------------------------" >> $LOGS
DISKS=( 0 1 2 3 4 5 6 7 )
for i in "${DISKS[@]}" ;
do
STATUS=`diskutil info /dev/disk$i | grep SMART | awk '{ print $3 }'`
if [ "$STATUS" = "Verified" ]; then
echo "SMART STATUS OK FOR DISK $i" >> $LOGS
else
echo "** SMART STATUS $STATUS FOR DISK $i **" >> $LOGS
fi
done
echo " " >> $LOGS
echo " " >> $LOGS
例えば:
$ diskutil info /dev/disk8 | grep SMART
SMART Status: Not Supported
$ diskutil info /dev/disk2 | grep SMART
SMART Status: Verified
理想的には、スクリプトは disk8 のような場合に「サポートされていません」と表示します。「SMART Status:」の値は、1 単語から数単語の間で異なる場合があると思います。マニュアルページにすべての可能性があるわけではないので、これに対する決定的な答えはありません。