사용자 입력을 기반으로 하는 루프/반복 쉘 스크립트

사용자 입력을 기반으로 하는 루프/반복 쉘 스크립트

저는 사용자의 지구 무게를 달의 무게로 변환하는 간단한 스크립트를 작성했습니다. 그러나 프로그램이 끝나면 사용자에게 프로세스를 반복하고 응답을 읽을 것인지 묻습니다.

사용자가 '예'라고 대답하면 스크립트가 반복되어야 하고, 그렇지 않으면 스크립트가 종료되어야 합니다.

이것이 내가 지금까지 가지고 있는 것이지만 사용자가 종료하지 않기로 결정한 경우 스크립트를 반복하는 방법을 알 수 없습니다.

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

관련 정보