ユーザー入力に基づくループ/繰り返しシェルスクリプト

ユーザー入力に基づくループ/繰り返しシェルスクリプト

私はユーザーの地球の重量を月の重量に変換する簡単なスクリプトを書いています。しかし、プログラムが終了したら、ユーザーにプロセスを繰り返して応答を読むかどうかを尋ねます。

ユーザーが「はい」と答えた場合はスクリプトを繰り返す必要があり、そうでない場合はスクリプトを終了する必要があります。

これが私が今まで持っているものですが、ユーザーが終了しないことを決めた場合、スクリプトを繰り返す方法がわかりません。

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

関連情報