如何检查一个数字是否在shell中的范围内 [英] How to check if a number is within a range in shell

查看:74
本文介绍了如何检查一个数字是否在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 you are using Bash, you are better off using the arithmetic expression, ((...)) for readability and flexibility:

if ((number >= 2 && number <= 5)); then
  # your code
fi

循环读取直到输入有效数字:

To read in a loop until a valid number is entered:

#!/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)).

另见:

这篇关于如何检查一个数字是否在shell中的范围内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆