まくまくLinux/Shellノート
Bash の構文: 関数内でローカル変数を扱う
2012-07-09

bash はデフォルトでは、関数外と関数内で変数を共有します。 例えば、以下のように関数内で代入を行うと、関数外でセットした値を上書きしてしまいます。

function myfunc {
  a=200
}

実行例

$ a=100
$ myfunc
$ echo $a
200    ★aの値が変わってる!

関数内だけで有効なローカル変数を扱うには以下のように local キーワードを付けます。

function myfunc {
  local a=200
}

実行例

$ a=100
$ myfunc
$ echo $a
100    ★aの値はそのまま
2012-07-09