Ich habe ein Prob mit der Bash. In meinem Backupskript funktioniert das Verlassen einer doppelten case-Struktur nicht so, wie ich es will. Ich muß dazu einen Trick anwenden, der aber wohl nicht ganz astrein ist. Hier erst einmal der Code:
- Code: Select all
#!/bin/bash
function showProgInfo() {
echo "Benutzung: backup OPTION"
echo "Optionen: <nothing> | hp | db | all"
}
function quit() {
exit 0
}
case $# in
0) PS3="Wahl: "
select ACTION in "db" "hp" "all" "quit"
do
test $ACTION && $0 $ACTION
test $ACTION || echo "falsche eingabe.";exit 1
done
;;
1) case $1 in
"db") bash ./db_backup
test $? == 0 && echo "o.k..."
test $? == 0 || echo "fehler beim backup!"
;;
"hp") bash ./hp_backup
test $? == 0 && echo "o.k."
test $? == 0 || echo "fehler beim backup!"
;;
"all") bash ./db_backup
test $? == 0 && echo "o.k..."
test $? == 0 || echo "fehler beim backup!"
bash ./hp_backup
test $? == 0 && echo "o.k."
test $? == 0 || echo "fehler beim backup!"
;;
"quit") echo "programmende."
quit
;;
*) showProgInfo
;;
esac
;;
*) showProgInfo
;;
esac
exit 0
das verlassen durch drücken von "4" im erstellten menü klappt zwar, allerdings nur durch diesen kunstgriff, indem die funktion aufgerufen wird. wenn ich auf die wahl von "quit" mit
- Code: Select all
4) echo "programmende "
exit 0
;;
reagiere, finde ich mich dann im menü wieder, weil nur die innere, aber nicht die äußere case-struktur verlassen wird!
gibt es da noch eine andere möglichkeit, oder bleibt mir nichts anderes übrig, als diese unsanfte methode mit dem aufruf der funktion "quit" zu nutzen?
eigentlich könnte ich mich zufrieden geben, denn das skript macht, was es soll. aber mich interessiert das jetzt mal
lg, pir187