次のコードがあります。
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 プロファイルを作成して高い権限でこれらのコマンドを実行することをお勧めします。これにより、パスワードを一度だけ入力したり、まったく入力する必要はありません。