• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

declare 관련하여서 궁금한게 있습니다!

24.02.19 12:42 작성 조회수 64

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

 

```