我不擅长 bash,我可以做基本的事情,但是当涉及到多个 if 语句时,那么我对它们来说是理所当然的。
我目前发表以下声明。
var=$(cat /sys/block/vda/queue/rotational)
dtype='nil'
if [ $var = 0 ]; then
dtype=' SSD '
elif [ $var = 1 ]; then
dtype=' HDD '
fi
由于许多机器使用 sda 而不是 vda,我正在寻找一种方法来使其有多个? if 语句(至少我是这么理解的)
基本上。如果第一个
var=$(cat /sys/block/vda/queue/rotational)
命令给出错误,它不会打印该错误。它会选择这个命令。 (仅当第一个不起作用时)
var1=$(cat /sys/block/sda/queue/rotational)
dtype='nil'
if [ $var = 0 ]; then
dtype=' SSD '
elif [ $var = 1 ]; then
dtype=' HDD '
fi
答案1
在您的具体情况下,您可以简单地使用||
:
var1=$(cat /sys/block/sda/queue/rotational || cat /sys/block/vda/queue/rotational)
这将执行您的第一个命令,如果第一个命令返回错误,则执行第二个命令。
正如您的评论中提到的,如果您想避免第一个命令的错误输出,只需使用重定向:
var1=$(cat /sys/block/sda/queue/rotational 2>/dev/null || cat /sys/block/vda/queue/rotational )