누군가 이 쉘 스크립트의 전역 변수를 설명하도록 도와줄 수 있습니까?

누군가 이 쉘 스크립트의 전역 변수를 설명하도록 도와줄 수 있습니까?

코드는 다음과 같습니다.

#!/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'

함수는 이것을 바꿔야 합니다.

관련 정보