셸 스 크 립 트 에서 발생 한 8 진법 과 10 진법 의 문제: 08: value too great for base (error token is "08")
3343 단어 일상적으로 잘못 을 보고 하 다.
[postgres@localhost ~]$ sh auto_partition.sh
uto_partition.sh: line 15: 08: value too great for base (error token is "08")
이러한 이상 은 주로 셸 에서 0 으로 시작 하기 때 문 입 니 다. 예 를 들 어 06 은 기본적으로 8 진 숫자 로 인식 되 기 때 문 입 니 다. 8 진 숫자 와 10 진 숫자 를 비교 하거나 연산 하면 상기 정 보 를 알려 줍 니 다.
스 크 립 트 에서 언급 된 비 교 는 다음 과 같다. 비교 도 있 고 계산 도 있다.
if [ $mon -eq 12 ];then
mon=01
else
mon=$(($mon+1))
fi
다음은 셸 명령 으로 어떻게 해결 하 는 지 설명 하 겠 습 니 다. 예 를 들 면 다음 과 같 습 니 다.
十进制下的计算如下 没问题
[postgres@localhost ~]$ mon=8
[postgres@localhost ~]$ echo $(($mon+1))
9
八进制的 如下 抛出异常
[postgres@localhost ~]$ mon=08
[postgres@localhost ~]$ echo $(($mon+1))
-bash: 08: value too great for base (error token is "08")
이 럴 때 8 진법 을 10 진법 으로 바 꿔 야 하 는데 그 중에서
$((10#$mon))
의 역할 은 8 진법 을 10 진법 으로 바 꾸 는 것 이다.[postgres@localhost ~]$ mon=08
[postgres@localhost ~]$ echo $(($((10#$mon))+1))
9