Bash 如何检查shell中的数字是否在范围内

Bash 如何检查shell中的数字是否在范围内,bash,shell,if-statement,sh,Bash,Shell,If Statement,Sh,我只想在两个值之间插入数字,否则脚本会重复,直到正确的数字 这是我的脚本,无法正常工作: 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

我只想在两个值之间插入数字,否则脚本会重复,直到正确的数字

这是我的脚本,无法正常工作:

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
您的if声明:

if [ $number -ge 2 && $number -ls 5 ]; then 
应该是:

if [ "$number" -ge 2 ] && [ "$number" -le 5 ]; then
所作的修改:

  • 考虑引用变量
  • ls
    不是有效的比较运算符,请使用
    le
  • 和&
    分隔单括号条件表达式
此外,在脚本的第一行中还需要一个shebang:
#/usr/bin/env bash

您的if语句:

if [ $number -ge 2 && $number -ls 5 ]; then 
if [ $number -ge 2 && $number -ls 5 ]; then
应该是:

if [ "$number" -ge 2 ] && [ "$number" -le 5 ]; then
所作的修改:

  • 考虑引用变量
  • ls
    不是有效的比较运算符,请使用
    le
  • 和&
    分隔单括号条件表达式
此外,在脚本的第一行中还需要一个shebang:
#/usr/bin/env bash

if [ $number -ge 2 && $number -ls 5 ]; then
应该是

if [[ $number -ge 2 && $number -le 5 ]]; then
有关详细信息,请参见
帮助[

应该是

if [[ $number -ge 2 && $number -le 5 ]]; then

有关详细信息,请参见
帮助[[
如果您使用的是Bash,最好使用算术表达式,
(…)
,以获得可读性和灵活性:

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

如果((number>=2&&number=2&&number=2&&number=2&&number如果使用Bash,最好使用算术表达式,
(…)
以提高可读性和灵活性:

if ((number >= 2 && number <= 5)); then
  # your code
fi
if((number>=2&&number=2&&number=2&&number2)需要更改

  • 塞尔吉奥建议

    如果[“$number”-ge 2]&&[“$number”-le 5];则

  • 不需要
    中断
    只在for、while或until循环中有意义

  • 2.需要作出改变

  • 塞尔吉奥建议

    如果[“$number”-ge 2]&&[“$number”-le 5];则

  • 不需要
    中断
    只在for、while或until循环中有意义

  • 试试下面的代码

    echo "Enter number" 
    
    read input
    
      if [[ $input ]] && [ $input -eq $input 2>/dev/null ]
    
      then
    
            if ((input >= 1 && input <= 4)); then
    
        echo "Access Granted..."
    
        break
    
      else
    
        echo "Wrong code"
    
      fi
    
      else
    
         echo "$input is not an integer or not defined"
    
      fi
    
    echo“输入号码”
    读取输入
    如果[[$input]]&&[$input-eq$input 2>/dev/null]
    然后
    如果((输入>=1&&input请尝试下面的代码

    echo "Enter number" 
    
    read input
    
      if [[ $input ]] && [ $input -eq $input 2>/dev/null ]
    
      then
    
            if ((input >= 1 && input <= 4)); then
    
        echo "Access Granted..."
    
        break
    
      else
    
        echo "Wrong code"
    
      fi
    
      else
    
         echo "$input is not an integer or not defined"
    
      fi
    
    echo“输入号码”
    读取输入
    如果[[$input]]&&[$input-eq$input 2>/dev/null]
    然后
    
    如果((input>=1&&input请说明运行此脚本时出现的错误或问题。添加一个shebang,然后将脚本粘贴到此处:请说明运行此脚本时出现的错误或问题。添加一个shebang,然后将脚本粘贴到此处:在Debian 9.8上运行
    bash
    4.4-5
    ((2)在Debian 9.8上运行
    bash
    4.4-5
    if((2)我的一位同事说,
    。)