「if」を削除してスクリプトをデバッグするにはどうすればよいですか?

「if」を削除してスクリプトをデバッグするにはどうすればよいですか?

次のコードがあります。

debug=$?
function a {
    su - javi -c "uptime"
    return $debug
}

function b {
    su - javi -c "cat /etc/redhat-release"
    return $debug
}

function c {
    su - javi -c "cat /etc/redhat-release"
    return $debug
}

case $debug in
0)
    a
    if [ $debug == 0 ]; then
        b
        echo "se ejcuta la funcion"
    elif [ $debug == 0 ]
        c   
    elif[].... <-----this

    fi
;;

1)
    echo "se ha producido un error"
;;

esac

ifを削除してデバッグする方法はありますか?私は彼らが関数を実行したいと思うし、それがうまくいったら他の関数​​にジャンプし、悪く終わったらスクリプトを残します。つまり、5つの関数があります

ベストアンサー1

各機能を実行してエラーを防ぐことが目標である場合は、次のように機能します。

function bail {
    echo "se ha producido un error ($1)"
    exit 1
}

function a {
    uptime
}

function b {
    cat /etc/redhat-release
}

function c { 
    cat /etc/redhat-release
}

for f in 'a' 'b' 'c'; do
    $f || bail "$f: $?"
done

これは各関数を実行し、エラーが発生すると関数名と終了コードが関数に送信され、1行を印刷してbail別のコマンドを終了します。

suテストするのが簡単なので、使用を削除しました。これを自動化するには、sudo プロファイルを作成して高い権限でこれらのコマンドを実行することをお勧めします。これにより、パスワードを一度だけ入力したり、まったく入力する必要はありません。

おすすめ記事