0에서 시작하고 동일한 크기(예: 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