Categories: shellscript

シェルスクリプトのローカル変数とグローバル変数の使い方

シェルスクリプトでは、変数を使ってデータを格納し、処理を行います。

変数にはローカル変数とグローバル変数があり、それぞれの使い方や違いを理解することが、スクリプトの効率的な作成に役立ちます。

この記事では、シェルスクリプトにおけるローカル変数とグローバル変数について詳しく解説します。

グローバル変数とローカル変数とは?

グローバル変数

グローバル変数は、シェルスクリプト全体でアクセスできる変数です。関数の外で定義される変数はすべてグローバル変数です。グローバル変数は、スクリプト内のどこからでも参照できます。

ローカル変数

ローカル変数は、特定の関数内でのみ有効な変数です。関数内でlocalキーワードを使って定義することで、その関数内だけでのスコープを持ち、関数外ではアクセスできません。

グローバル変数を利用したスクリプトの例

このスクリプトでは、g_varという変数がグローバル変数として定義され、関数内外で利用できます。

#!/bin/bash

# グローバル変数の定義
g_var="Hello!"

print_global_var() {
    echo "$g_var"
}

print_global_var  # 出力: Hello!
echo "$g_var"     # 出力: Hello!

ローカル変数を利用したスクリプトの例

この例では、l_varがlocal_example関数内でローカル変数として定義されています。関数外ではアクセスできず、l_varの値は表示されません。

!/bin/bash

# ローカル変数を持つ関数
local_example() {
    local l_var="Good morning!"
    echo "$l_var"
}

local_example  # 出力: Good morning!
echo "$l_var"  # 出力: 何も表示されない

グローバル変数とローカル変数の使い分け

グローバル変数の利点

  • 共通データの保持: スクリプト全体で共有したい設定値やデータを保持するのに便利です。
  • 関数間のデータ共有: 関数間でデータを共有する必要がある場合に使用します。

ローカル変数の利点

  • 関数の独立性: 関数内での処理に必要なデータだけを扱うため、関数間での干渉を避けることができます。
  • バグの防止: 変数のスコープを限定することで、意図しない値の変更や参照を防ぐことができます。

まとめ

シェルスクリプトにおけるローカル変数とグローバル変数の使い分けは、スクリプトの効率性と可読性を高めるために重要です。

グローバル変数は全体で共有するデータに、ローカル変数は関数内の一時的なデータに使用します。

適切に使い分けることで、よりクリーンでバグの少ないスクリプトを作成することができます。

Haruoka