2

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

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

ARCHIVE_USER=user1                               

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

test_function(){

  ARCHIVE_USER=user2
  test_function2()
}

test_function2(){
  echo ARCHIVE_USER
}

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

4

2 回答 2

2

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

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

你应该阅读更多关于subshell/subprocess.

于 2012-05-09T03:12:58.867 回答
1

该脚本按您的预期工作,即打印“B”。

#!/usr/bin/bash

TEST=A

test_a()
{ 
    TEST=B
    test_b
}

test_b()
{
    echo $TEST
}

test_a

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

于 2012-05-09T03:14:40.750 回答