코드 요약(또는 수행해야 할 작업): 사용자는 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!"