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)

これは最初のコマンドを実行し、最初のコマンドがエラーを返すと2番目のコマンドを実行します。

あなたのコメントで述べたように、最初のコマンドの誤った出力を避けるためにリダイレクトを使用してください。

var1=$(cat /sys/block/sda/queue/rotational 2>/dev/null || cat /sys/block/vda/queue/rotational )

おすすめ記事