サーチ…


前書き

デフォルトでは、bashのすべての変数は、スクリプト内で変数を宣言している場合は、すべての関数、スクリプト、さらには外部シェルまでグローバルです。

変数を関数のローカル変数にしたい場合は、 localを使用してその変数にグローバルスコープに依存せず、その関数内でのみアクセス可能な新しい変数を持たせることができます。

グローバル変数

var="hello"

function foo(){
    echo $var
}

foo

明らかに "hello"が出力されますが、これは逆も同様です。

function foo()  {
    var="hello"
}

foo
echo $var

"hello"も出力されます

ローカル変数

function foo() {
    local var
    var="hello"
}

foo
echo $var

varは関数fooのローカル変数であり、その値は外部からは見えないので、何も出力しません。

二つを一緒に混ぜる

var="hello"

function foo(){
    local var="sup?"
    echo "inside function, var=$var"
}

foo
echo "outside function, var=$var"

出力する

inside function, var=sup?
outside function, var=hello


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow