$ CHOICEが "QUIT"でないか、指定された整数(変数)より小さい数字でない限り、このループを維持します。
私はこれを使用しています:(例えば22を使用)
NUMBER=22
CHOICE=99
while [ "$CHOICE" -gt "$NUMBER" ] && [ "$CHOICE" != "QUIT" ]; do
read CHOICE < /dev/tty
done
ただし、「test」と入力すると、最初のテストで整数が予想されるため、スクリプトがクラッシュします。
この衝突を防ぐにはどうすればよいですか?
ベストアンサー1
CHOICE が「QUIT」でない場合、または NUMBER より小さい整数の場合、次のコードが繰り返されます。
NUMBER=22
while :; do
read CHOICE
case $CHOICE in
QUIT) break;;
*[!0-9]*|'') ;;
*) test "$CHOICE" -lt "$NUMBER" && break;;
esac
done
ユーザーが^ Dを入力したときにループを終了するには、read
ループ条件を次のように設定する必要がありますwhile read CHOICE; do case $CHOICE ...
。