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