반응형
기본에 비해 너무 큰 값 (오류 토큰은 "08"임)
이 질문에 이미 답변이 있습니다.
- 기본에 비해 너무 큰 값 (오류 토큰은 "09"임) 5 개의 답변
여기서 내 문제는 if 문에서 단일 대괄호 [] 및 이중 대괄호 [[]] 사용의 차이점을 찾는 것입니다.
#!/bin/bash
vara=08;
varb=10;
## single bracket in if statment is working.
if [ $vara -lt $varb ]; then
echo "yes";
else
echo "no";
fi
## double brackets in if statment is not working; throwing an error like below.
## [[: 08: value too great for base (error token is "08")
if [[ $vara -lt $varb ]]; then
echo "yes";
else
echo "no";
fi
쉘은 0으로 시작하는 08을 8 진수로 해석하려고합니다. 그러나 10 진수 8은 8 진수 010이므로 숫자 0-7 만 8 진수로 허용됩니다. 따라서 08은 유효한 숫자가 아니므로 오류가 발생합니다.
단일 대괄호는 sh와의 일종의 "호환성 모드"이며 sh는 8 진수에 대해 알지 못합니다.
따라서 단일 대괄호를 사용하는 경우 "010"은 10으로 해석되고 이중 대괄호를 사용하는 경우 "010"은 8로 해석됩니다.
단일 대괄호를 사용하는 경우 "08"은 8로 해석되고 이중 대괄호를 사용하면 유효한 숫자가 아니며 오류가 발생합니다.
여기에 설명 된 솔루션을 사용하여 오류를 방지 할 수 있습니다. https://stackoverflow.com/a/12821845/1419315
if [[ ${vara#0} -lt ${varb#0} ]]
또는
if [[ $((10#$vara)) -lt $((10#$varb)) ]]
참고 URL : https://stackoverflow.com/questions/24777597/value-too-great-for-base-error-token-is-08
반응형
'IT박스' 카테고리의 다른 글
파이썬은 헤더와 함께 POST를 보냅니다. (0) | 2020.12.12 |
---|---|
VS2012 용 Sql Server Data Tools가 Sql Server 2012와 호환되지 않는 것은 어떻습니까? (0) | 2020.12.12 |
Windows 10 미리보기의 Microsoft Edge (Project Spartan)에서 localhost를 열 수 없음 (0) | 2020.12.12 |
어레이 / 객체에 어떻게 액세스 할 수 있습니까? (0) | 2020.12.12 |
정수를 쓰여진 숫자로 변환 (0) | 2020.12.12 |