shell函數的局部變量,全局變量。

例子1:

#!/bin/bash

function test() {
    #先輸出變量 d_o_f
    echo "d_o_f:" $d_o_f 
    #函數內定義的變量 d_i_f 和 d_o_f
    d_i_f="defined in function"
    d_o_f="modified in function"
    #函數內定義後,輸出兩個變量
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
#函數外部定義變量d_o_f
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

輸出:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f: defined out function
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f: defined in function
d_o_f: modified in function

由上面的輸出可以看出,

1、函數內是可以訪問全局變量,並且對全局變量的修改會真正改變全局變量的值。

2、函數內定義的變量也是全局變量,也就是說函數外可以訪問。


例子2:

#!/bin/bash

function test() {
    #設置d_o_f爲局部變量
    local d_o_f
    #設置d_i_f爲局部變量
    local d_i_f
    #輸出變量d_o_f
    echo "d_o_f:" $d_o_f
    #函數內定義變量
    d_i_f="defined in function"
    d_o_f="modified in function"
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
#函數外部定義變量d_o_f
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

輸出:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f:
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f:
d_o_f: defined out function

從結果中可以看出關鍵詞local起作用了。

1、對一個與全局變量同名的局部變量修改不會影響全局變量的值。

2、在函數外不能訪問一個局部變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章