0으로 시작하는 숫자가 왜 이런 흥미로운 동작을 생성하는지 설명해 줄 수 있는 사람이 있나요?
#!/bin/bash
NUM=016
SUM=$((NUM + 1))
echo "$NUM + 1 = $SUM"
다음을 인쇄합니다:
016 + 1 = 15
답변1
오해는 이 숫자가 귀하의 기대를 나타내지 않는다는 것입니다.
선행 0은 8진법 숫자를 나타냅니다. 016
즉 와 동일 합니다 8#16
. 선행 0을 유지하려면 가 필요합니다 10#016
.
> num=016
> echo $((num))
14
> echo $((10#$num))
16
답변2
왜냐하면:
~$ echo $((NUM))
14
숫자가 0으로 시작하면 8진수 값으로 간주되며 8진수 16은 10진수 14와 같습니다.