declare나 typeset 내장 명령(이 둘은 동의어입니다.) 키워드는 변수의 특성을 제한할 수 있습니다. 이것은 몇몇 프로그래밍 언어에서 볼 수 있는 불완전한 형태의 타입 지정입니다. declare 명령어는 bash 버전 2 이후부터 가능합니다. typeset 명령어는 ksh 스크립트에서도 가능합니다.
declare -r var1 |
(declare -r var1 는 readonly var1 와 똑같이 동작합니다)
C에서 const 형한정어(qualifier)와 거의 비슷하고, 이런 변수의 값을 바꾸려고 하면 에러 메세지가 납니다.
declare -i number # 이 스크립트는 이후 나오는 모든 "number"를 정수로 취급할 것입니다. number=3 echo "number = $number" # number = 3 number=three echo "number = $number" # number = 0 # "three"를 정수로 계산하려는 시도. |
declare -a indices |
indices 변수는 배열로 취급됩니다.
declare -f |
스크립트에서 인자 없이 declare -f 가 나오는 줄에서는 스크립트안에서 정의된 모든 함수들의 목록을 보여줍니다.
declare -f function_name |
스크립트 안에서 declare -f function_name 라고 하면 그냥 그 함수 이름을 보여줍니다.
declare -x var3 |
이 선언은 스크립트 외부 환경에서도 이 변수를 쓸 수 있게 해 줍니다.
declare -x var3=373 |
declare 명령어는 한 문장 안에서 선언과 동시에 그 값을 할당할 수 있게 해 줍니다.
예 9-16. declare를 써서 변수 타입 지정하기
#!/bin/bash func1 () { echo 여기는 함수에요. } declare -f # 위 함수를 나열. echo declare -i var1 # var1 은 정수. var1=2367 echo "var1 은 $var1 로 선언됐습니다." var1=var1+1 # 정수 선언은 'let' 이 필요없습니다. echo "1이 증가된 var1 은 $var1 입니다." # Attempt to change variable declared as integer echo "var1을 부동형 값인 2367.1 로 바꾸려는 시도." var1=2367.1 # 에러 메세지를 내고 값은 변하지 않습니다. echo "var1 은 여전히 $var1 입니다." echo declare -r var2=13.36 # 'declare' 는 변수 타입을 설정하고 동시에 #+ 그 값을 할당할 수 있게 해 줍니다. echo "var2 는 $var2 로 선언됐습니다." # 읽기 전용 변수 값을 변경하려는 시도. var2=13.37 # 에러 메세지를 내고 스크립트 종료. echo "var2 는 여전히 $var2 입니다." # 여기는 실행되지 않을 것입니다. exit 0 # 여기서 종료되지 않습니다. |