Múltiplas instruções If em um script bash [duplicado]

1

Eu não sou bom em bash, eu posso fazer o básico, mas quando se trata de várias declarações if, então eu não sou um acéfalo para eles.

Atualmente, tenho a seguinte declaração feita.

var=$(cat /sys/block/vda/queue/rotational)
dtype='nil'
if [ $var = 0 ]; then
        dtype=' SSD '
elif [ $var = 1 ]; then
        dtype=' HDD '
fi

Como muitas máquinas usam sda em vez de vda, estou procurando uma maneira de fazer com que houvesse múltiplos? if statements (pelo menos é assim que eu entendo)

Basicamente. Se o primeiro var=$(cat /sys/block/vda/queue/rotational) comando me dá e erro, não iria imprimir aquele para fora. e escolheria esse comando em vez disso. (Somente se o primeiro não estiver funcionando)

var1=$(cat /sys/block/sda/queue/rotational)
dtype='nil'
if [ $var = 0 ]; then
        dtype=' SSD '
elif [ $var = 1 ]; then
        dtype=' HDD '
fi
    
por TheSebM8 21.03.2018 / 14:16

1 resposta

2

No seu caso específico, você poderia simplesmente usar || :

var1=$(cat /sys/block/sda/queue/rotational || cat /sys/block/vda/queue/rotational)

Isso executaria seu primeiro comando e, se o primeiro retornasse um erro, executaria o segundo.

Como mencionado no seu comentário, se você quiser evitar a saída do erro no primeiro comando, basta usar o redirecionamento:

var1=$(cat /sys/block/sda/queue/rotational 2>/dev/null || cat /sys/block/vda/queue/rotational )
    
por 21.03.2018 / 14:24