我有一系列范围(即桶或鸽子洞),从 0 开始,大小相同(例如 32):
[0…31]、[32…63]、[64…95]、…
给定一个非负整数,我如何确定(在 bash 或其他 shell 脚本中)它属于哪个存储桶?例如:
- 如果给定数字 = 15,则响应 = [0…31](即,最小值 = 0 且最大值 = 31)
- 如果给定数字 = 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