ゼロから始まり、同じサイズ(たとえば32)の一連の範囲(たとえば、バケットまたは鳩穴)があります。
[0… 31]、[32… 63]、[64… 95]、…
負でない整数が与えられたら、それが属するバケットを(bashまたは他のシェルスクリプトで)どのように決定しますか?たとえば、
- 与えられた数字が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