4. 변수 타입 지정: declare/typeset
declare
나 typeset
내장 명령 키워드는 변수의 특성을 제한할 수 있고, 이 둘은 동의어로 취급된다. 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