Es ist meine erste Frage, so hoffe ich, dass ich klar genug bin Ich habe das folgende Problem mit einem Fall in einem Fall. Der erste ist ein Menü, das eine Funktion auslöst. In der Funktion gibt es einen anderen Fall. Falls der Benutzer NEIN wählt, sollte er zum ersten Fall zurückkehren. habe ich nicht gefunden, wie zu tun, dass das erste Skript neben der Einleitung (den ersten Fall enthält:BASH: zum oberen verschachtelten Fall
menu.sh
:
source ./functions.sh
#read answer
while read answer;do
case $answer in
1)
function1
;;
2)
function2
;;
3)
# the same, without function
read -p "do you want to continue [y/n] ?" choice
case $choice in
y|Y)
# DO SOME STUFF
menu.sh
;;
n|N)
./menu.sh
;;
*)
echo "invalid input"
./menu.sh
;;
esac
4)
function4
;;
5)
quit
;;
esac
done
functions.sh
:
function1() {
read -p "do you want to continue [y/n] ?" choice
case $choice in
y|Y)
# DO SOME STUFF and go back to menu
echo "hello"
menu.sh
;;
n|N)
./menu.sh
;;
*)
echo "invalid input"
./menu.sh
;;
esac
}
so wie Sie sehen können, wenn Die Funktion wird gestartet, es wird der zweite Fall gestartet, in dem der Benutzer gefragt wird, ob er fortfahren möchte.Wenn er Nein wählt, kann er das Menü wieder aufrufen.Aber mit der Art und Weise, wie ich es tue, spawne ich ein Menü.sh in dem Fall. Was ist die bessere Lösung? Vielen Dank im Voraus für Ihre Hilfe
Verwenden Sie eine Funktion oder eine Schleife, anstatt das Skript erneut aufzurufen. Oder lassen Sie einfach das zweite Skript enden und Sie kehren zum ersten zurück. Sie müssen es nicht noch einmal aufrufen. Intead von './Menu.sh', einfach' exit'. – 123
FYI: Sie vermissen eine ';;' vor '4)' – Jahid