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
하지 않는 한 , 선언은 각 이름을 command 와 같은 로컬 이름으로 만듭니다.-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" )