주어진 숫자가 어느 범위(버킷)에 속하는지 확인

주어진 숫자가 어느 범위(버킷)에 속하는지 확인

0에서 시작하고 동일한 크기(예: 32)의 일련의 범위(예: 버킷 또는 비둘기 구멍)가 있습니다.

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

음수가 아닌 정수가 주어지면 그것이 속한 버킷을 (bash 또는 다른 쉘 스크립트에서) 어떻게 결정합니까? 예를 들어:

  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

관련 정보