2

私はシェルスクリプトを初めて使用しますが、次の問題についてサポートが必要です。

スクリプトがあります。次のように定義されたグローバル変数があります。

ARCHIVE_USER=user1                               

次に、メソッドで、これらの変数の値を変更しています。

test_function(){

  ARCHIVE_USER=user2
  test_function2()
}

test_function2(){
  echo ARCHIVE_USER
}

変数の値を「user2」に変更test_function2したため、「user1」ではなく「user2」を出力したいのですが、実行すると常に「user1」が出力されます。test_function私はここで何が間違っているのですか?

4

2 に答える 2

2

これらの関数は同じ環境で定義する必要があります。

それらを別のスクリプトに入れて、 および で実行する/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 に答える