Posted at

grubでパーティションの存在に応じて分岐

More than 1 year has passed since last update.

grubではシェルスクリプトのように、ファイルがある場合分岐するという処理を書くことができます。

if [ -e /hoge ]; then

echo "found hoge"
fi

しかしながらパーティションが存在する場合分岐したい場合は一工夫必要です。

例えば(hd0,msdos3)が存在する場合は以下のように書きます。

cat (hd0,msdos3)/

if [ $? -ne 12 ]; then
echo "found (hd0,msdos3)"
fi

ポイントはcatコマンドを実行して、その終了ステータスコードを利用するところです。

パーティションがない場合は終了ステータスとして12が返ってきます。

grubにはlsコマンドがあり、lsコマンドでもパーティションの存在を確認できますが、

結果は標準出力にしか表示されず、終了ステータスコードは常に0なのでスクリプトには使えないです。