
Zusammenfassung des Codes (oder was er tun soll): Der Benutzer erhält eine Frage und muss eine gültige Teilnehmernummer zwischen 5 und 20 eingeben. Anschließend sollten die Fragen basierend auf der Anzahl dieser Eingabe wiederholt werden (bei 5 Teilnehmern müssen die Fragen zu Name und Land 5 Mal wiederholt werden). Wenn der Name länger als 10 Zeichen ist oder das Land nicht Italien ist, sollte eine Warnmeldung erscheinen, die den Benutzer auffordert, die Frage korrekt zu wiederholen. Nachdem der Bewerber die korrekten Informationen eingegeben hat, sollten sowohl Name als auch Land an eine externe Datei gesendet werden. Dies sollte für jeden Bewerber wiederholt werden.
Ich habe versucht, eine Schleife für die Werte Name und Land zu implementieren, aber sie scheinen entweder unendlich zu laufen, oder wenn einer der Werte falsch ist, läuft die Schleife immer weiter. Ich denke, das hat etwas mit der Inkrementierung zu tun, aber ich bin mir nicht ganz sicher, was ich tun soll.
Ich bin für jeden Tipp dankbar.
#!/bin/sh
i=0
read -p "Welcome to the lottery program. Please enter a number of participants between 5-20." input
while [ $input -lt 5 ] || [ $input -gt 20 ]
do
read -rp "Number of people must be 5-20" input
done
while [ $i -lt $input ]
do
read -p "Enter name(max 10 characters)" name
read -p "Enter country(only for people outside of Italy)" country
while [ ${#name} -gt 10 ]
do
read -p "The name was too long (over 10 chars). Please re-enter: " name
done
while [ "$country" = "Italy" ]
do
read -p "Italy is not included within the program. Please try again" country
done
while [ ${#name} -le 10 ] && [ "$country" != "Italy" ]
do
echo $name $country >>echo.txt
i=$((i+1))
done
done
echo "The records have been saved $input times"
Antwort1
Bearbeitet aus Ihrem Beitrag von letzter Woche. Ich glaube, was passiert ist, war, als Sie von Ihrem Linux-Skript übertragen haben,Vielleichtdu hast ein paar Leerzeichen vermasselt. Ich werde das Ganze abtippen, ich hoffe, du lernst es! Fühl dich frei, mir bei Bedarf Fragen zu stellen. Und noch einmal zur Erinnerung: Bitte schreib, welcher Fehler bei dir auftritt, also den genauen Fehlercode vom Terminal!
#!/bin/sh
i=0
echo -e "Please enter a number of participants between 5-20 :\c"
read input
while [ $input -lt 5 ] || [ $input -gt 20 ]
do
read -rp "Number of people must be 5-20" input
done
while [ $i -lt $input ]
do
read -p "Enter name(max 10 characters) :" name
read -p "Enter country(only for people outside of Italy) :" country
if [ ${#name} -le 10 ] && [ "$country" != "italy" ]
then
i=$((i+1))
echo $name $country >> echoed.txt
elif [ ${#name} -gt 10 ]
then
read -rp "your name is too long! re-enter!"
else
echo "Italy isnt accpeted"
fi
done
echo "All $input records are saved!"