用户输入循环直到输入数字

用户输入循环直到输入数字

我正在尝试创建一个循环,以便问题不断出现,直到用户正确输入数字为止。我尝试这样做,但我不知道我做错了什么。任何帮助,将不胜感激。

#!/bin/sh 

read -p "Welcome to the Draw Program. Please enter a number in-between 5-20: " input

while [ $input -lt 5 ] && [ $input -gt 20 ] 
do 
echo "Your number wasn't within the range. Please re-enter"
done

答案1

一个数怎么能同时小于5大于20?我想你想要:

while [ "$input" -lt 5 ] || [ "$input" -gt 20 ]

此外,您还必须在循环中重新提示输入数字。

while [ "$input" -lt 5 ] || [ "$input" -gt 20 ]
do
    read -rp "Your number wasn't within the range. Please re-enter" input
done

仅供参考,POSIX 未指定用于读取的 -p 选项,因此不保证所有形式的 sh 都支持它。如果该程序旨在跨多个晦涩的操作系统使用并且可移植性至关重要,您可以执行以下操作:

printf '%s' "Your number wasn't within the range. Please re-enter: "
read -r input

答案2

你可能会发现这样写更直观、更清晰:

while ! (( (5 <= input) && (input <= 20) )); do
    echo "Your number wasn't within the range. Please re-enter"
done

通过上面的内容,您可以一眼看出它正在测试input介于 和 之间520因为这就是变量名称input在代码中所在的位置。

相关内容