在bash中定義函數
function和函數名字可以任意省略一個
需要注意的是,函數必須在被調用之前定義
如果沒有特別標注,bash中的變量都是全局變量,即使定義在函數內部,所以在函數外部也可以使用;反過來也一樣,在函數外部定義的變量在函數內部也可以使用。例如在函數內部修改變量
#!/bin/bash update_prefecture() { prefecture=Aomori ←----- 修改在函數外部定義的變量的值 echo "$prefecture" } prefecture=Hokkaido ←----- 定義變量(全局變量) echo "$prefecture" update_prefecture echo "$prefecture"
結果是
若想定義只作用于函數內部的局部變量可以加local字段
local 變量名=值
對于嵌套調用的兩個函數,在外部函數中定義一個局部變量prefecture,然后在內部被調用的函數中修改變量的值,則修改后的結果對外部函數也是有影響的,例如:
#!/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 ←----- 內部函數沿用在外部函數中定義的變量的值 [update_prefecture1] Aomori ←----- 在內部函數中修改變量值 [update_prefecture2] Aomori ←----- 外部函數的值也被修改了 Hokkaido ←----- 函數外部的全局變量不受影響
local命令可以使用和declare命令相同的參數選,例如定義數組類型的局部變量
local-aprefectures=(IwateMiyagi)
要想在函數內部使用指定的參數,可以使用位置參數$1, $2
#!/bin/bash print_argument() { echo "$0 = $0" echo "$1 = $1" echo "$2 = $2" echo "$3 = $3" echo "$# = $#" } print_argument aaa bbb ←----- 在調用函數時傳遞參數
FUNCNAME是bash的一個數組類型的變量,里面保存了當前運行的所有函數名,通過變量FUNCNAME獲取并輸出函數名
審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
函數
+關注
關注
3文章
4327瀏覽量
62573 -
Shell腳本
+關注
關注
0文章
36瀏覽量
7971
發布評論請先 登錄
相關推薦
嵌入式和物聯網的shell腳本學習指南之shell腳本入門免費下載
本文檔的主要內容詳細技術的是嵌入式和物聯網的shell腳本學習指南之shell腳本入門免費下載。
發表于 09-11 17:15
?20次下載
109個實用shell腳本分享
Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進行解析,然后執行這些功能,也可以說Shell腳本就是一系列命令的集合
shell腳本基礎知識
shell腳本是一個文件,里面存放的是特定格式的指令,系統可以使用腳本解析器翻譯或解析指令并執行(無需編譯),shell腳本的本質是
剖析Linux shell 函數實現
作為一個嵌入式 Linux 工程師,肯定需要編寫 shell 腳本進行一些自動化工作。剛好,我最近就有類似需求——一鍵交叉編譯 DDS。本著“編寫漂亮代碼的原則”,我用到了 **shell 函
Linux Shell腳本經典案例分享
? 作為一名 Linux 運維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網上沖浪的時候,發現大家對Shell腳本都有“心結”,要么覺得自己寫出來不好看,要么根本無從下手。 下面分享249個真實
發表于 06-16 14:03
?649次閱讀
評論