작성
·
154
0
먼저 좋은 강의 감사합니다!
declare 쪽 확인하다가 궁금한게 있어서요.
declare -i INTEGER
INTEGER = "0001"
를 할당 했을 때 저는 0 이 리턴 될거라고 예상했는데, (string으로 값을 부여했기때문에)
1이 리턴이 되더라고요. 그래서 declare 명령문을 사용했을 때
혹시 숫자 파싱 도 자동으로 진행하는건가요?
답변 1
0
안녕하세요. pigi-1004님.
declare -i로 선언한 변수는 integer 속성을 갖게 됩니다. 입력한 값을 다양한 방법으로 해석을 시도합니다. integer화가 불가능한 문자를 저장하는 경우 integer화에 실패해 0을 저장합니다. 10진수 integer 이외에도 0
으로 시작하는 2진수와 0x
로 시작하는 16진수를 처리해 10진수의 값을 저장합니다. 아래 예제를 보시면 좀 더 쉽게 이해되실 것 같습니다. 아래 예제를 확인해보시길 바라겠습니다. 감사합니다~!
# declare -i ee
// 문자를 저장하면 0이 정수화에 실패해 0이 저장됩니다.
# ee="A"
# echo $ee
0
// 01010은 2진수로 해석되어 10진수 520이 저장됩니다.
# ee="01010"
# echo $ee
520
//0xff는 16진수로 해석되어 10진수 255가 저장됩니다.
# ee="0xff"
# echo $ee
255
// 예제를 들어주신 0001은 2진수로 해석되어 10진수 1이 저장됩니다.
# ee="0001"
# echo $ee
1
```