Hallo Fange gerade an mich mit der Shell auseinander zu setzen. Dazu habe ich mir verschiedene Struktogramme angesehen und diese umgesetzt. Das hat auch gut funktioniert bis zu dieser kleinen Aufgabe. (https://www.oszhandel.de/gymnasium/faecher/informatik/aktuellekurse/penon/sammler_einfuehrungsphase/struktogramme_uebungsaufgabe_loesung.html) Hier die Aufgabe 3. Es handelt sich um ein einfaches Ratespiel. Man gibt eine Geheimzahl und eine Ratezahl an und das Programm vergleicht ... Das ist das was ich geschrieben habe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #/bin/bash read -p "Geheimzahl:" zahl g=$zahl read -p "Ratezahl:" rzahl r=$rzahl # Geheimzahl ungleich Ratezahl while [ $g -le $r -o $g -ge $r ]; do # Geheimzahl gleich Ratezahl if [ $g -eq $r ]; then echo " " echo "Hurra gewonnen" # Geheimzahl kleiner Ratezahl elif [ $g -lt $r ]; then echo " " echo "Ratezahl zu hoch!" read -p "Neue Ratezahl eingeben:" zahl g=$zahl else echo " " echo "Ratezahl zu niedrig!" read -p "Neue Ratezahl eingeben:" rzahl r=$rzahl fi done |
Fehler: Wenn die Ratezahl größer ist als die Geheimzahl gibt das Skript "..zu hoch" aus. Gibt man jetzt einen gleichen oder niedrigeren Wert an gibt das Skript immer noch ".. zu hoch" aus. Kurz : Das Programm hängt immer bei elif fest.
Mir würde ein Link reichen um selber auf die Lösung zu kommen oder eben eine kleine Erklärung.