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

标签 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 number is" $number

最佳答案

如果您使用的是 Bash,最好使用算术表达式 ((...))为了可读性和灵 active :

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)) .


另见:

关于bash - 如何检查数字是否在shell中的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50521798/

相关文章:

bash - 如何在 unix 终端模拟器中使用脚本命令?

linux - 在 bash shell 上循环 "for..do"

javascript - If 语句上的多个选择器

sql - 如何从 bash 脚本格式化 PostgreSQL 查询中的引号

bash - 为 SSH 生成子 shell 并继续程序流程

shell - 如何使用shell脚本连接到postgresql数据库

ruby - 从 shell 中调用 ruby

if-statement - 退出带有空 return 语句的函数是好还是坏的做法?

javascript - isNaN 似乎无法正常工作

linux - 使用 Bash 备份目录