例子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、在函數外不能訪問一個局部變量。