在bash中定義函數(shù)
function和函數(shù)名字可以任意省略一個
需要注意的是,函數(shù)必須在被調(diào)用之前定義
如果沒有特別標(biāo)注,bash中的變量都是全局變量,即使定義在函數(shù)內(nèi)部,所以在函數(shù)外部也可以使用;反過來也一樣,在函數(shù)外部定義的變量在函數(shù)內(nèi)部也可以使用。例如在函數(shù)內(nèi)部修改變量
#!/bin/bash update_prefecture() { prefecture=Aomori ←----- 修改在函數(shù)外部定義的變量的值 echo "$prefecture" } prefecture=Hokkaido ←----- 定義變量(全局變量) echo "$prefecture" update_prefecture echo "$prefecture"
結(jié)果是
若想定義只作用于函數(shù)內(nèi)部的局部變量可以加local字段
local 變量名=值
對于嵌套調(diào)用的兩個函數(shù),在外部函數(shù)中定義一個局部變量prefecture,然后在內(nèi)部被調(diào)用的函數(shù)中修改變量的值,則修改后的結(jié)果對外部函數(shù)也是有影響的,例如:
#!/bin/bash update_prefecture1() { echo "[update_prefecture1] $prefecture" prefecture=Aomori echo "[update_prefecture1] $prefecture" } update_prefecture2() { local prefecture=Iwate echo "[update_prefecture2] $prefecture" update_prefecture1 echo "[update_prefecture2] $prefecture" } prefecture=Hokkaido echo "$prefecture" update_prefecture2 echo "$prefecture" $ ./local_param_nest.sh Hokkaido [update_prefecture2] Iwate [update_prefecture1] Iwate ←----- 內(nèi)部函數(shù)沿用在外部函數(shù)中定義的變量的值 [update_prefecture1] Aomori ←----- 在內(nèi)部函數(shù)中修改變量值 [update_prefecture2] Aomori ←----- 外部函數(shù)的值也被修改了 Hokkaido ←----- 函數(shù)外部的全局變量不受影響
local命令可以使用和declare命令相同的參數(shù)選,例如定義數(shù)組類型的局部變量
local-aprefectures=(IwateMiyagi)
要想在函數(shù)內(nèi)部使用指定的參數(shù),可以使用位置參數(shù)$1, $2
#!/bin/bash print_argument() { echo "$0 = $0" echo "$1 = $1" echo "$2 = $2" echo "$3 = $3" echo "$# = $#" } print_argument aaa bbb ←----- 在調(diào)用函數(shù)時傳遞參數(shù)
FUNCNAME是bash的一個數(shù)組類型的變量,里面保存了當(dāng)前運行的所有函數(shù)名,通過變量FUNCNAME獲取并輸出函數(shù)名
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4379瀏覽量
64768 -
Shell腳本
+關(guān)注
關(guān)注
0文章
36瀏覽量
8233
發(fā)布評論請先 登錄
【RT-Thread學(xué)習(xí)筆記】結(jié)合案例學(xué)習(xí)調(diào)試shell腳本

嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費下載

109個實用shell腳本分享
shell腳本基礎(chǔ)知識
剖析Linux shell 函數(shù)實現(xiàn)

Linux Shell腳本經(jīng)典案例分享

評論