Shell 程式設計實戰 全域性變數 區域性變數

2021-10-09 12:35:31 字數 1997 閱讀 6899

全域性變數可以在指令碼中定義,也可以在某個函式中定義。在指令碼中定義的變數都是全域性變數,其作用域為從被定義的地方開始,一直到shell指令碼結束或者被顯式地刪除

如下,演示全域性變數的使用方法

[root@wan day02]

# vim var3.sh

#!/bin/bash

#定義函式

func(

)#在指令碼中定義變數x

v1=100

#呼叫函式

func

#輸出變數x的值

echo

"$v1"

#除錯[root@wan day02]

# chmod +x var3.sh

[root@wan day02]

# ./var3.sh

100200

[root@wan day02]

# vim var4.sh +

#!/bin/bash

#定義函式

func(

)#呼叫函式

func

#輸出變數的值

echo

"$v2"

[root@wan day02]

# chmod +x var4.sh

[root@wan day02]

# ./var4.sh

200

與全域性變數相比,區域性變數的使用範圍較小,通常僅限於某個程式段訪問,例如函式內部。在

shell語言中,可以在函式內部通過local關鍵字定義區域性變數,另外,函式的引數也是區域性變數。

如下,演示使用local關鍵字定義區域性變數

[root@wan day02]

# vim var5.sh +

#!/bin/bash

#定義函式

func(

)#呼叫函式

func

#輸出變數的值

echo

"$v2"

[root@wan day02]

# chmod +x var5.sh

[root@wan day02]

# ./var5.sh

[root@wan day02]

# vim var6.sh +

#!/bin/bash

#定義函式

func(

)#定義全域性變數v1

v1=1

#呼叫函式

func

#輸出全域性變數v1的值

echo

"global variable v1 is $v1"

[root@wan day02]

# chmod +x var6.sh

[root@wan day02]

# ./var6.sh

global variable v1 is 1

local variable v1 is 2

global variable v1 is 1

[root@wan day02]

# vim var7.sh +

#!/bin/bash

#定義函式

func(

)#定義全域性變數v1

v1=1

#呼叫函式

func

#輸出全域性變數v1的值

echo

"global variable v1 is $v1"

[root@wan day02]

# chmod +x var7.sh

[root@wan day02]

# ./var7.sh

global variable v1 is v1

local variable v1 is 2

global variable v1 is v1

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。這句話應該錯了,應該是放在常量資料段 全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用...

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用在定義它的那個檔案裡,卻不能用在程式中...

全域性變數 靜態全域性變數區域性變數 靜態區域性變數

對於乙個完整的程式,在記憶體中的分布情況如下圖 區 low address 全域性資料區 堆區 棧區 high address 一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部的靜態區域性變數 也存放在全域性資料區。...