O comando cat
sai 0
no sucesso, diferente de zero na falha. Você não quer o código de saída de cat
; você quer um valor em um arquivo. Use a substituição de comandos $(...)
, que captura a saída do comando.
if [ "$(cat /sys/block/sda/queue/rotational)" = 0 ]; then
echo "SSD"
else
echo "HDD"
fi