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

많은 머신이 vda 대신 sda를 사용하기 때문에 여러개 가질 수 있는 방법을 찾고 있는 걸까요? 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 )

관련 정보