코드는 다음과 같습니다.
#!/bin/bash
var_change() {
local var1='local 1'
echo Inside function: var1 is $var1 : var2 is $var2
var1='changed again'
var2='2 changed again'
}
var1='global 1'
var2='global 2'
echo Before function call: var1 is $var1 : var2 is $var2
var_change
echo After function call: var1 is $var1 : var2 is $var2
위 스크립트를 실행했을 때의 출력입니다.
Before function call: var1 is global 1 : var2 is global 2
Inside function: var1 is local 1 : var2 is global 2
After function call: var1 is global 1 : var2 is 2 changed again
마지막 줄인 After 함수 호출을 살펴보세요. 여기서 var2가 "2로 다시 변경됨"인 이유를 이해할 수 없습니다. 나는 단지 var_change 함수 외부에서 var2 변수가 global2여야 한다고 생각합니다.
답변1
함수에는 var2
선언이 없으므로 local
"전역"입니다. 즉, 함수 끝의 값은 함수 호출 이후의 값이 됩니다.
즉, var1
함수 내부의 변수는 "로컬"이므로같은 변수는 아니고글로벌 이름을 딴 것 중 하나로서 var2
.
답변2
다음에 추가
local var2='local 2'
함수는 이것을 바꿔야 합니다.