-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

例として、これらはスクリプトのkeyコマンドからの典型的な結果です。

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

1 に答える 1

0

コマンド置換を使用できるので、次のようになります。

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

コマンドの出力はforループで直接置換され、DISKLISTファイルは必要ありません。これについてはabs:コマンド置換で詳しく説明します

于 2013-02-11T21:04:54.403 に答える