グローバルおよびローカル変数の割り当て

グローバルおよびローカル変数の割り当て

私はいくつかのオンラインチュートリアルを通してシェルスクリプトを学んでおり、グローバル変数とローカル変数の違いを宣言する次のスクリプトを得ました。

#!/bin/bash
# Experimenting with variable scope
var_change () {
  local var1='local 1'
  echo Inside function: var1 is $var1 : var2 is $var2
  var1='changed again'
  var2='changed again'
}

var1='global 1'
var2='global 2'

echo Before function call: var1 is $var1 : var2 is $var2

var_change

echo After function call: var1 is $var1 : var2 is $var2

出力は次のとおりです

関数呼び出し前:var1はグローバル1:var2はグローバル2

内部機能: var1ローカル1:var2はグローバル2

関数呼び出し後:var1はグローバル1:var2は再変更

私の質問...

var1関数呼び出し後に「再変更」の代わりに「グローバル1」があるのはなぜですか?誰かがこれを説明できますか?

ベストアンサー1

var1関数内でローカルに宣言されました。したがって、関数の実行中に次のようなものがあります。二つ変数名var1:グローバル変数とローカル変数。ただし、関数はローカル関数のみを「見る」ことができます(ローカル関数はグローバル関数を「隠します」)。したがって、関数内で実行するすべての操作はローカルvar1変数に対して実行され、グローバル変数はvar1まったく触れません。

おすすめ記事