确定给定数字属于哪个范围(桶)

确定给定数字属于哪个范围(桶)

我有一系列范围(即桶或鸽子洞),从 0 开始,大小相同(例如 32):

[0…31]、[32…63]、[64…95]、…

给定一个非负整数,我如何确定(在 bash 或其他 shell 脚本中)它属于哪个存储桶?例如:

  1. 如果给定数字 = 15,则响应 = [0…31](即,最小值 = 0 且最大值 = 31)
  2. 如果给定数字 = 35,则响应 = [32…63](即 32 && 63)

答案1

像这样的事情怎么样?

range() {
  # increment
  incr=$1
  # input
  input=$2

  # mathematically, min = floor( input/incr )*incr
  # then max = min+incr-1
  # but `floor' isn't necessary in bash because it uses integer division

  min=$(( input/incr*incr ))
  max=$(( min+incr-1 ))

  echo $min $max
}

然后:

$ range 32 15
0 31
$ range 32 35
32 63

相关内容