방금 UNIX에 대해 읽기 시작했고 변수 정의를 접했습니다. 웹사이트에 따르면 구문을 사용하여 직접 정의된 UNIX 변수를 말합니다 variable_name=value
.
변수와 관련된 데이터 유형이 없습니까?
답변1
POSIX 표준에 따르면 환경 변수는 관련 데이터 유형이 없는 일반 문자열입니다.
그러나 확장 기능으로 일부 쉘(예 bash
: , ksh
, ksh93
및 zsh
기타)에서는 숫자, 배열과 같은 변수 유형의 입력을 허용합니다. 읽기 전용 또는 미리 형식이 지정된 변수도 지원될 수 있습니다.
일반적으로 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
두 번째 테스트에서는 이를 문자열로 처리합니다.