
Bash(v4.3.11) 터미널에 다음을 입력하세요.
function FUNCtst() { declare -A astr; astr=([a]="1k" [b]="2k" ); declare -p astr; };FUNCtst;declare -p astr
(아래도 동일합니다. 여기에서 읽기 쉽도록)
function FUNCtst() {
declare -A astr;
astr=([a]="1k" [b]="2k" );
declare -p astr;
};
FUNCtst;
declare -p astr
이것을 출력합니다(함수 외부에서 배열의 값이 손실됩니다. 이유는 무엇입니까?)
declare -A astr='([a]="1k" [b]="2k" )'
bash: declare: astr: not found
나는 이것이 다음과 같이 출력될 것으로 예상했습니다.
declare -A astr='([a]="1k" [b]="2k" )'
declare -A astr='([a]="1k" [b]="2k" )'
어떻게 작동하게 만들 수 있나요?
답변1
로부터매뉴얼 페이지:
함수에서 사용될 때 선언은 옵션이 사용
local
되지 않는 한 명령 과 마찬가지로 각 이름을 로컬로 만듭니다.-g
예:
FUNCtst() {
declare -gA astr
astr=([a]="1k" [b]="2k" )
declare -p astr
}
FUNCtst
declare -p astr
인쇄물
declare -A astr=([a]="1k" [b]="2k" )
declare -A astr=([a]="1k" [b]="2k" )