Linux シェル,関数内でのみ、グローバル変数を上書きする

スポンサーリンク

鍛錬 167

Linux シェルスクリプト,関数内でのみ、グローバル変数を上書きする

Linux のシェルスクリプトで、関数内でのみグローバル変数を上書きするには、関数内で local を使用します。
 
シェルスクリプト

以下のシェルスクリプト local_variable.sh は、関数内でのみグローバル変数を上書きしています。

#!/bin/sh

# グローバル変数に 1 を格納
GLOBAL_NUM=1

# 関数
func_sample () {
	# グローバル変数を上書き
	local GLOBAL_NUM=$((GLOBAL_NUM + 1))
	echo "関数内の値 = $GLOBAL_NUM"
}

echo "関数外の値(関数呼び出し前) = $GLOBAL_NUM"

# 関数呼び出し
func_sample

echo "関数外の値(関数呼び出し後) = $GLOBAL_NUM"

 
実行結果

以下は、シェルスクリプト local_variable.sh を実行しています。

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./local_variable.sh
関数外の値(関数呼び出し前) = 1
関数内の値 = 2
関数外の値(関数呼び出し後) = 1

 
上記に示した通り、関数の呼び出し前後でグローバル変数の値は変化しておらず、関数内でのみ、変数が上書きされていることが分かります。

タイトルとURLをコピーしました