LinuxドライブがSSDまたはHDDの場合

LinuxドライブがSSDまたはHDDの場合

私はこの小さなスクリプトを操作する方法を見つけようとしています。

このcatコマンドは1または0を提供する必要があります。

if [cat /sys/block/sda/queue/rotational = 0 ]; then
    echo "SSD"
else
    echo "HDD"
fi

catグーグルして誰かの投稿でこのコマンドを見つけました。

sdaこのスクリプトを使用して、ドライブがSSDかHDDかを印刷しようとします。等号の後の値を0から1に変更して動作するかどうかをテストできます。

また、「SSDまたはHDD」だけを印刷し、他のものは印刷しないことを望みます。

答え1

if [ "$(cat /sys/block/sda/queue/rotational)" = 0 ]; then
    echo "SSD"
else
    echo "HDD"
fi

Bashでは、次のこともできます。

if [ "$(</sys/block/sda/queue/rotational)" = 0 ]; then
    echo "SSD"
else
    echo "HDD"
fi

答え2

catコマンドは0成功すると終了し、失敗するとゼロ以外の値を返します。catファイルの値が必要な場合は、終了コードは必要ありません。コマンド置換を使用して$(...)コマンド出力をキャプチャします。

if [ "$(cat /sys/block/sda/queue/rotational)" = 0 ]; then
    echo "SSD"
else
    echo "HDD"
fi

関連情報