2012-05-09 53 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