2017年12月3日 星期日

『Bash Shell』如何使用內建指令 local Command 宣告區域變數 程式範例/完整說明

全域變數與區域變數的宣告有底下兩件事情要注意

1. 在 shell script 或 function 內宣告變數時,都是全域變數。

範例:

#!/bin/sh

var0="global_var0"

function local_var()
{
        declare -p var0
        var1="global_var1"
        declare -p var1
}

declare -p var0
local_var
declare -p var1

結果:

declare -- var0="global_var0"
declare -- var0="global_var0"
declare -- var1="global_var1"
declare -- var1="global_var1"

說明:

範例中使用 declare -p 來看變數是否存在,在 shell script 內宣告的 var0,在 local_var() 函式也是存在,表示 var0 是全域變數。而 var1 是在 local_var() 函式內宣告,但是離開 local_var() 函式後,var1 還是存在,表示 var1 也是全域變數。

2. 區域變數需要使用 local Command 來宣告,但只有函式 function 內可以使用 local Command 來宣告區域變數。

範例:



#!/bin/sh



function local_var()

{
        local var1="global_var1"
}

local_var
declare -p var1

local var0="global_var0"

結果:

./local_cmd2.sh: line 9: declare: var1: not found
./local_cmd2.sh: line 11: local: can only be used in a function

說明:

1. var1 是在 local_var() 函式內宣告,離開 local_var() 函式後,var1 不存在,表示 var1 是區域變數。

2. 在 shell script 內使用 local Command 宣告 var0 發生錯誤,因為 local Command 只能在函式 function 中被使用。

好站連結
1. http://linux.vbird.org/linux_basic/0320bash.php#variable_range

沒有留言:

張貼留言