シェルスクリプト - 2つの変数を持つ二重条件付き

シェルスクリプト - 2つの変数を持つ二重条件付き

みんなこんにちは、

クラスの課題でこれを行う必要がありますが、どうすればよいかわかりません。

スクリプトは、ユーザーに 2 つの変数 L と C を満たす 2 つの別々のステートメントを要求します。 LとCの両方が1〜3の範囲にあることを確認する必要があります。 LまたはCの値が1未満または3より高い場合(範囲外)、スクリプトは警告を印刷して新しい値を要求する必要があります。

printf "Please, enter L and C: "
read L C
while [[ $L -ge 1 -a $L -le 3 ]]; do
    while [[ $C -ge 1 -a $C -ge 3 ]]; do

これは期待どおりに機能します(ループ)。この問題をよりよく処理する方法はありますか?

ありがとう、

ラファエル

答え1

読みやすくするために、次のことを行います。

checkrange() {
   if [[ "$1" -le 3 ]] && [[ "$1" -ge 1 ]]; then
      return 0
   else
      return 1
   fi
}

L=0
C=0
prompt="Please enter values for L and C >"
while ! ( checkrange "$L" && checkrange "$C" ); do
   read -p "$prompt" L C
   prompt="Invalid input; please enter new values for L and C >"
done

関連情報