みんなこんにちは、
クラスの課題でこれを行う必要がありますが、どうすればよいかわかりません。
スクリプトは、ユーザーに 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