
Resumen del código (o lo que debería hacer): el usuario recibe una pregunta, el usuario debe ingresar un número de participante válido entre 5 y 20. Luego, las preguntas deben repetirse según el número de estos aportes (si hay 5 participantes, repita las preguntas sobre el nombre y el país 5 veces). Si el nombre tiene más de 10 caracteres o el país no es Italia, debería aparecer un mensaje de advertencia para pedirle al usuario que repita la pregunta correctamente. Una vez que el solicitante haya ingresado la información correcta, tanto el nombre como el país deben enviarse a un archivo externo. Esto debería repetirse para cada solicitante.
Intenté implementar un bucle para los valores de nombre y país, pero parece que se repiten infinitamente o, cuando uno de los valores es incorrecto, el bucle continúa. Creo que esto tiene algo que ver con el incremento, pero no estoy exactamente seguro de qué hacer.
Se agradecería cualquier consejo.
#!/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"
Respuesta1
Editado de la publicación de las últimas semanas. Creo que lo que sucedió fue cuando transfieres desde tu script de Linux,tal vezarruinaste algunos espacios. Voy a escribir todo, ¡espero que puedas aprender! no dudes en hacerme preguntas si es necesario. Y recuerde nuevamente: escriba el error al que se enfrenta, como el código de error exacto del 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!"