2012-05-09 6 views
2

쉘 스크립팅에 익숙하지 않아 다음 문제에 대한 도움이 필요합니다.쉘 스크립트에서 전역 변수를 재 할당

스크립트가 있습니다. 다음과 같이이 전역 변수 정의했습니다

ARCHIVE_USER=user1        

그런 방법으로, 나는이 변수의 값을 변경하고 있습니다 :

test_function(){ 

    ARCHIVE_USER=user2 
    test_function2() 
} 

test_function2(){ 
    echo ARCHIVE_USER 
} 

내가 원하는 test_function2를 대신 "USER1의"사용자 2 "를 인쇄 "test_function에서 변수 값을"user2 "로 변경했기 때문에 실행했을 때 항상 출력으로"user1 "을 제공합니다. 여기서 내가 뭘 잘못하고 있니?

+1

echo $ ARCHIVE_USER가 test_function2()에서 더 양호해야합니다. 또는 "내보내기"를 사용하여 전체 환경으로 설정할 수 있습니다. 예 : ARCHIVE_USER = user1을 내 보냅니다. – Depado

답변

1

이 스크립트는 예상대로 작동합니다 (예 : "B").

#!/usr/bin/bash 

TEST=A 

test_a() 
{ 
    TEST=B 
    test_b 
} 

test_b() 
{ 
    echo $TEST 
} 

test_a 

그래서 내 질문에 어떻게 test_function()을 호출합니까?

+0

예, 당신은 정확합니다, 여기에, 내 원래 스크립트에서 값을 B asigning 전에 테스트 변수를 test_b 일부 다른 함수에 의해 호출 된 예제 스크립트를 제공했습니다. 그게 문제가되고있다. 당신의 대답은 제가이 문제를 해결할 수 있도록 도와주었습니다. 시간 내 줘서 고마워... – KItis

2

동일한 환경에서 이러한 기능을 정의해야합니다.

다른 스크립트에 넣은 경우 /path/to/script_1.sh/path/to/script_2으로 실행하십시오. 그들은 서로에게 영향을 미치지 않을 것입니다. 다른 환경에서 실행되기 때문입니다.

subshell/subprocess에 대해 자세히 알아보십시오.

관련 문제