Попытка создать программу с вложенными циклами while

Попытка создать программу с вложенными циклами while

Краткое описание кода (или что он должен делать): Пользователь получает вопрос, пользователь должен ввести действительный номер участника от 5 до 20. Затем вопросы должны повторяться на основе количества этих входных данных (если 5 участников, то повторите вопросы об имени и стране 5 раз). Если имя длиннее 10 символов или страна не Италия, то должно появиться предупреждающее сообщение с просьбой к пользователю повторить вопрос правильно. После того, как заявитель ввел правильную информацию, входные данные имени и страны должны быть отправлены во внешний файл. Это должно повторяться для каждого заявителя.

Я пытался реализовать цикл для значений имени и страны, но они, похоже, либо зацикливаются бесконечно, либо, если одно из значений неверно, цикл продолжается. Я думаю, это как-то связано с приращением, но я не совсем уверен, что делать.

Буду признателен за любые советы.

#!/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"    
    

решение1

Отредактировано из вашего поста прошлой недели. Я думаю, что это произошло, когда вы перешли со своего скрипта Linux,может бытьвы перепутали пробелы. я напечатаю все это, надеюсь, вы сможете научиться! не стесняйтесь задавать мне вопросы, если это необходимо. И напоминаю еще раз, пожалуйста, напишите, с какой ошибкой вы столкнулись, например, точный код ошибки из терминала!

#!/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!"

Связанный контент