UNIX의 변수 데이터 유형

UNIX의 변수 데이터 유형

방금 UNIX에 대해 읽기 시작했고 변수 정의를 접했습니다. 웹사이트에 따르면 구문을 사용하여 직접 정의된 UNIX 변수를 말합니다 variable_name=value.

변수와 관련된 데이터 유형이 없습니까?

답변1

POSIX 표준에 따르면 환경 변수는 관련 데이터 유형이 없는 일반 문자열입니다.

그러나 확장 기능으로 일부 쉘(예 bash: , ksh, ksh93zsh기타)에서는 숫자, 배열과 같은 변수 유형의 입력을 허용합니다. 읽기 전용 또는 미리 형식이 지정된 변수도 지원될 수 있습니다.

일반적으로 typeset내장 함수를 사용하여 declare입력 됩니다.

다음은 정수 테스트의 예입니다 ksh93.

$ typeset -i var
$ var=abc
$ echo $var # non numerical -> set to zero
0
$ var=0xffff # hexadecimal
$ echo $var
65535
$ var=0xffffffff
$ echo $var
-1           # ksh93 integers are 32 bit signed
$ var=2147483649
$ echo $var
-2147483647  # overflow

규칙 기능을 사용하면 ksh93변수에 사용자 정의 유형을 할당할 수 있습니다.

답변2

쉘 스크립트에는 데이터 유형이 하나만 있습니다. 모든 것이 텍스트입니다. 다양한 명령은 필요에 따라 텍스트를 다르게 해석할 수 있습니다.

$ [ "1" -eq "01" ] && echo yes || echo no
yes
$ [ "1" = "01" ] && echo yes || echo no
no

첫 번째 테스트에서는 합계를 숫자로 1해석합니다 . 두 번째 테스트에서는 합계를 8진수로 해석할 것입니다. 01두 번째 테스트에서는 이를 문자열로 처리합니다.

관련 정보