Skip to content

4. 변수 타입 지정: declare/typeset


declaretypeset 내장 명령 키워드는 변수의 특성을 제한할 수 있고, 이 둘은 동의어로 취급된다. declare/typeset 옵션은 다음과 같다.


옵션 사용법 설명
-r declare -r var1 읽기 전용이므로 변경 시 에러 발생
readonly var1과 동일하게 동작함
-i declare -i number 정수
-a declare -a indices 배열
-f declare -f,
declare -f function_name
함수
-x declare -x var1 외부 환경에서도 해당 변수 사용 가능
var=$value declare -x var1=373 한 문장 안에서 선언과 동시에 할당 가능


예제) declare를 써서 변수 타입 지정하기
#!/bin/bash

# 함수 func1 선언
func1() {
    echo "여기는 함수입니다."
}
# 함수 func2 선언
func2() {
    echo "여기도 함수입니다."
}

# 스크립트 내 전체 함수 목록 출력
declare -f
# func1 ()
# {
#     echo "여기는 함수입니다."
# }
# func2 ()
# {
#     echo "여기도 함수입니다."
# }
# 특정 함수 출력
declare -f func1
# func1 ()
# {
#     echo "여기는 함수입니다."
# }
declare -f func2
# func2 ()
# {
#     echo "여기도 함수입니다."
# }

# 정수 선언
declare -i var1
var1=2367

echo "var1은 ${var1} 로 선언되었습니다."
# var1은 2367 로 선언되었습니다.

# 정수 선언은 'let'이 필요없음
var1=var1+1
echo "1이 증가된 var1은 ${var1} 입니다."
# 1이 증가된 var1은 2368 입니다.

# var1을 부동 소수점 2367.1로 바꾸려는 시도
# 에러 메시지를 내고 값은 변하지 않음
var1=2367.1
echo "var1은 여전히 ${var1} 입니다."
# var1은 여전히 2368 입니다.

# 읽기 전용 선언 및 할당
declare -r var2=13.36

echo "var2는 ${var2} 로 선언되었습니다."
# var2는 13.36 로 선언되었습니다.

# 에러 메시지를 내고 스크립트 종료
var2=13.37

# 스크립트가 종료되었기 때문에 실행되지 않음
echo "var2는 여전히 ${var2} 입니다."

# 여기서 종료되지 않음
exit 0

References