bash - How to check if a number is within a range in shell
问题描述
I want to just insert number between two values, and otherwise the script repeated until correct number.
This is my script and it does not work correctly:
validation(){
read number
if [ $number -ge 2 && $number -ls 5 ]; then
echo "valid number"
break
else
echo "not valid number, try again"
fi
}
echo "insert number"
validation
echo "your number is" $number
解决方案
如果您使用 Bash,则最好使用算术表达式,((...))
以提高可读性和灵活性:
if ((number >= 2 && number <= 5)); then
# your code
fi
循环读取直到输入有效数字:
#!/bin/bash
while :; do
read -p "Enter a number between 2 and 5: " number
[[ $number =~ ^[0-9]+$ ]] || { echo "Enter a valid number"; continue; }
if ((number >= 2 && number <= 5)); then
echo "valid number"
break
else
echo "number out of range, try again"
fi
done
((number >= 2 && number <= 5))
也可以写成((2 <= number <= 5))
。
也可以看看:
推荐阅读
- c++ - 带有 C 库的 QtCreator 中的链接器问题
- python - 如何使用python在pdf中设置页脚(django with pisa)
- php - 在 mime_content_type() 中在 Wordpress 中上传图片时出错
- python-3.x - 使用 Python 创建唯一键的更有效方法
- c# - ASP.NET MVC CheckBoxFor“无法从 bool 转换为 system.linq。
" - android - 无法使布局宽度与我在 XML 上的文本相同
- ruby - 如何使用 Sinatra 框架 Ruby 链接网站页面(我的 href 问题)?
- javascript - 使用 React-quill 编辑器在 React Form 中 Onchange 函数不起作用
- javascript - 用 Java 脚本编写的固定括号插件
- android - 如何在android的TextView中使用特殊字符