2012-05-09 95 views
2

我是shell腳本編程新手,我需要一些關於以下問題的幫助:在shell腳本中重新分配全局變量

我有腳本。它有一個全局變量定義如下:

ARCHIVE_USER=user1        

然後,在一個方法,我改變了值,這些變量:

test_function(){ 

    ARCHIVE_USER=user2 
    test_function2() 
} 

test_function2(){ 
    echo ARCHIVE_USER 
} 

我想test_function2打印「用戶2」,而不是「USER1 「因爲在test_function我已將變量值重命名爲」user2「,但是當我運行它時,它始終將」user1「作爲輸出。我在這裏做錯了什麼?

+1

echo $ ARCHIVE_USER應該在test_function2()中更好。或者你可以使用「導出」來設置整個環境。例如:export 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賦值給TEST變量之前,test_b被其他函數調用。這已經成爲問題。你的回答幫助我確定了這個問題。謝謝你的時間... – KItis

2

您應該在相同的環境中定義這些函數。

如果你把它們放在不同的腳本中,並運行它們/path/to/script_1.sh/path/to/script_2。他們不會互相影響。因爲他們在不同的環境中運行。

您應該詳細瞭解subshell/subprocess