Bash에서 지역 변수를 초기화하는 방법은 무엇입니까? 다음 명령이 실행됩니다언제나같은 일을 합니까(함수 내부에서 사용될 때)?
local foo
local foo=
local foo=""
답변1
local foo=""
완전히 동일 합니다 local foo=
. 두 경우 모두 등호의 오른쪽은 빈 문자열입니다.
local foo
과 local 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
빈 문자열입니다.