Bash 지역 변수 초기화

Bash 지역 변수 초기화

Bash에서 지역 변수를 초기화하는 방법은 무엇입니까? 다음 명령이 실행됩니다언제나같은 일을 합니까(함수 내부에서 사용될 때)?

local foo
local foo=
local foo=""

답변1

local foo=""완전히 동일 합니다 local foo=. 두 경우 모두 등호의 오른쪽은 빈 문자열입니다.

local foolocal foo=다릅니다. 설정되지 않은 상태 local foo로 유지 foo되고 빈 문자열로 local foo=설정됩니다 . foo보다 정확하게는 local foo지역 변수가 생성되고 처음에는 설정이 해제됩니다. 후속 할당은 foo=…로컬 값을 설정하고 할당은 local이 문과 결합될 수 있습니다. 증인:

bash-4.3$ demo () {
  local unset empty=
  echo "unset=\"${unset-(not set)}\" empty=\"${empty-(not set)}\""
}
bash-4.3$ demo
unset="(not set)" empty=""

typeset이는 ksh와 동일하게 작동합니다(ksh에서는 대신 키워드를 사용해야 함을 제외 local). 반면에 zsh에서는 local foo설정이 foo빈 문자열입니다.

관련 정보