![사용자 입력을 기반으로 하는 루프/반복 쉘 스크립트](https://linux55.com/image/106604/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%ED%95%98%EB%8A%94%20%EB%A3%A8%ED%94%84%2F%EB%B0%98%EB%B3%B5%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
저는 사용자의 지구 무게를 달의 무게로 변환하는 간단한 스크립트를 작성했습니다. 그러나 프로그램이 끝나면 사용자에게 프로세스를 반복하고 응답을 읽을 것인지 묻습니다.
사용자가 '예'라고 대답하면 스크립트가 반복되어야 하고, 그렇지 않으면 스크립트가 종료되어야 합니다.
이것이 내가 지금까지 가지고 있는 것이지만 사용자가 종료하지 않기로 결정한 경우 스크립트를 반복하는 방법을 알 수 없습니다.
echo -n "Enter starting weight: "
read star
echo -n "Enter ending weight: "
read end
echo -n "Enter weight increment: "
read increment
while [ $star -le $end ]
do
moonweight=`echo $star \* .166 | bc`
echo "$star pounds on earth = $moonweight pounds on the moon"
star=`expr $star + $increment`
done
notDone=true
while [ $notDone ]
do
echo -n "Enter a number or Q to quit: "
read var1 junk
var1=`echo $var1 | tr 'A-Z' 'a-z'`
if [ $var1 = "q" ]
then
echo "Goodbye"
exit
else
fi
done
답변1
다른 while 루프로 감싸십시오.
while :
do
echo -n "Enter starting weight: "
read star
echo -n "Enter ending weight: "
read end
echo -n "Enter weight increment: "
read increment
while [ "$star" -le "$end" ]
do
moonweight=`echo $star \* .166 | bc`
echo "$star pounds on earth = $moonweight pounds on the moon"
star=`expr $star + $increment`
done
notDone=true
while $notDone
do
echo -n "Enter a number or Q to quit: "
read var1 junk
var1=`echo $var1 | tr 'A-Z' 'a-z'`
if [ "$var1" = "q" ]
then
echo "Goodbye"
exit
else
notDone=false
fi
done
done