在shell脚本中重新分配全局变量

时间:2012-05-09 03:04:32

标签: bash shell scripting

我是shell脚本的新手,我需要一些关于以下问题的帮助:

我有脚本。它有一个全局变量,定义如下:

ARCHIVE_USER=user1                               

然后,在方法中,我正在更改这些变量的值:

test_function(){

  ARCHIVE_USER=user2
  test_function2()
}

test_function2(){
  echo ARCHIVE_USER
}

我希望test_function2打印“user2”而不是“user1”,因为在test_function我已将变量值重命名为“user2”,但是当我运行它时,它总是给我“user1”作为输出。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您应该在同一环境中定义这些功能。

如果您将它们放在不同的脚本中,请按/path/to/script_1.sh/path/to/script_2运行它们。它们不会相互影响。因为它们在不同的环境中运行。

您应该阅读有关subshell/subprocess的更多信息。

答案 1 :(得分:1)

此脚本按预期工作,即打印“B”。

#!/usr/bin/bash

TEST=A

test_a()
{ 
    TEST=B
    test_b
}

test_b()
{
    echo $TEST
}

test_a

所以,我的问题是你如何调用test_function()?