我设置了一个while循环,它应该要求用户键入0到10之间的数字,然后根据输入给出各种响应。但是,在执行程序时,如果输入的不是0,5或10,它会无限循环下面的一个响应,而不是显示一次。
INPUTMOD=0
echo "Please enter a number from 0-10, inclusive"
read INPUTMOD
while true
do
if [ "$INPUTMOD" -lt 0 ] || [ "$INPUTMOD" -gt 10 ]; then
echo "Please enter a number between 0 and 10, inclusive"
elif [ "$INPUTMOD" -eq 0 ] || [ "$INPUTMOD" -eq 5 ] || [ "$INPUTMOD" -eq 10 ]; then
echo "Your input is congruent with _ mod 5 = 0. Congratulations!"
break
else
echo "Please enter a number between 0 and 10, inclusive."
fi
done
此循环的总体目标是不断提示用户输入0到10之间的数字,直到它们输入0,5或10(输入mod 5 = 0)。当按下非数字键时,它将无限提示用户输入正确的数字。
非常感谢有关此事的任何和所有帮助!
编辑:正如我的教授所指示的那样,if if,else和gt都是必需的。
答案 0 :(得分:1)
你混淆了一些逻辑:
if [ "$INPUTMOD" -lt 0 ] && [ "$INPUTMOD" -gt 10 ]; then
应该是
if [ "$INPUTMOD" -lt 0 ] || [ "$INPUTMOD" -gt 10 ]; then
因为同一时间内任何数字都不能小于0且大于10。 并且
elif [ "$INPUTMOD" -eq 0 ] || [ "$INPUTMOD" -eq 5 ] [ "$INPUTMOD" -eq 10 ]; then
不完整。你到底错过了什么,确定会发现..;)
然后:你的while循环有望永远运行。你不是说不仅要求一个新号码而且要接受一个新号码是好事吗?
答案 1 :(得分:0)
如果条件错误,那么你必须要求提供号码,
只需更改类似的代码,
在done
语句
read INPUTMOD
那就是它。
所以现在它不会连续问一个数字, 它会要求一次并等待您的输入