シェルスクリプトでは、変数を使ってデータを格納し、処理を行います。
変数にはローカル変数とグローバル変数があり、それぞれの使い方や違いを理解することが、スクリプトの効率的な作成に役立ちます。
この記事では、シェルスクリプトにおけるローカル変数とグローバル変数について詳しく解説します。
目次
グローバル変数とローカル変数とは?
グローバル変数
グローバル変数は、シェルスクリプト全体でアクセスできる変数です。関数の外で定義される変数はすべてグローバル変数です。グローバル変数は、スクリプト内のどこからでも参照できます。
ローカル変数
ローカル変数は、特定の関数内でのみ有効な変数です。関数内で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" # 出力: 何も表示されない
グローバル変数とローカル変数の使い分け
グローバル変数の利点
- 共通データの保持: スクリプト全体で共有したい設定値やデータを保持するのに便利です。
- 関数間のデータ共有: 関数間でデータを共有する必要がある場合に使用します。
ローカル変数の利点
- 関数の独立性: 関数内での処理に必要なデータだけを扱うため、関数間での干渉を避けることができます。
- バグの防止: 変数のスコープを限定することで、意図しない値の変更や参照を防ぐことができます。
まとめ
シェルスクリプトにおけるローカル変数とグローバル変数の使い分けは、スクリプトの効率性と可読性を高めるために重要です。
グローバル変数は全体で共有するデータに、ローカル変数は関数内の一時的なデータに使用します。
適切に使い分けることで、よりクリーンでバグの少ないスクリプトを作成することができます。