web-dev-qa-db-ja.com

空の出力と正常な終了ステータスを同時に確認します

次のテストをインストーラースクリプトで記述したい1

if [ -n "`/etc/grub.d/30_os-prober`" ]; then
    install_dual_boot
else
    install_linux_only
fi

ただし、30_os-proberが何らかの理由で完了しなかったために、出力が生成されない可能性もあります。 30_os-proberがゼロ以外の終了ステータスで失敗した場合、デュアルブートの状況を想定する方が安全です。

30_os-proberが出力を生成しなかった成功した​​ことを確認するにはどうすればよいですか?

基本的には…と同じような効果が欲しいです。

if [ -n "`/etc/grub.d/30_os-prober`" ]; then
    # Do stuff for a dual-boot machine
    install_dual_boot
Elif ! /etc/grub.d/30_os-prober >/dev/null; then
    # OS probe failed; assume dual boot out of abundance of caution
    install_dual_boot
else
    install_linux_only
fi

…ただし、同じコマンドを2回実行する必要はありません。


1 背景情報:30_os-proberには GRUB2 が付属しており、私が書いているスクリプトは [〜#〜] fai [〜#〜] のカスタム構成の一部です。 。

4
200_success

値を変数に割り当ててから、終了ステータスも確認できます。

PROBE_VALUE=`/etc/grub.d/30_os-prober`

if [ "$?" -eq 0 ] && [ -z "$PROBE_VALUE" ]; then
    install_linux_only
else
    install_dual_boot
fi
6
ferada