bash 脚本中的多个 If 语句

bash 脚本中的多个 If 语句

我不擅长 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 )

相关内容