8.2. 숫자 상수(Numerical Constants)

쉘 스크립트는 특별한 접두사나 표기법이 없다면 숫자를 10진수로 해석합니다. 만약에 숫자 앞에 0이 있다면 8진수 (8진법)고, 0x이 있으면 16진수(16진법)입니다. #이 들어간 숫자는 진법#숫자로 계산됩니다(이 옵션은 범위 제한이 있기 때문에 유용하지 않습니다).

예 8-3. 숫자 상수 표기법:

#!/bin/bash
# numbers.sh: 숫자 표시법.

# 10진수
let "d = 32"
echo "d = $d"
# 별로 특별한 게 없네요.


# 8진수: '0' 다음에 나오는 숫자
let "o = 071"
echo "o = $o"
# 결과는 10진수로 나타납니다.

# 16진수: '0x'나 '0X' 다음에 나오는 숫자
let "h = 0x7a"
echo "h = $h"
# 결과는 10진수로 나타납니다.

# 다른 진법: 진수#숫자
# 진수는 2 와 36 사이가 올 수 있습니다.
let "b = 32#77"
echo "b = $b"
#
# 이 표기법은 아주 제한된 범위의 숫자(2 - 36)에서만 동작합니다.
                # ... 10 개의 숫자 + 26 개의 알파벳 문자 = 36.
let "c = 2#47"  # 범위 초과 에러:
# numbers.sh: let: c = 2#47: value too great for base (error token is "2#47")
echo "c = $c"

echo

echo $((36#zz)) $((2#10101010)) $((16#AF16))

exit 0
# 자세한 설명 고마워요. S.C.