首页 > 解决方案 > 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

标签: bashshellif-statementsh

解决方案


如果您使用 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))


也可以看看:


推荐阅读