《Linux命令行與shell脚本編程大全》第17章

17.1基本的腳本函數函數運行結束時會返回一個退出狀態碼,三種不同的方法為函數生成退出狀態碼

17.1基本的腳本函數

17.1.1創建函數

管道一:

function name {commands}

管道二:

name(){commands}

name --函數的唯一名稱

commands --構成函數的一條或多條bash shell命令

17.2返回值

函數運行結束時會返回一個退出狀態碼,三種不同的方法為函數生成退出狀態碼

17.2.1默認退出狀態碼

默認情况下,函數的退出狀態碼是函數中最後一條命令返回的退出狀態碼。在函數執行結束後,可以用標準變數$?來確定函數的退出狀態碼。

由於只能返回最後一條語句執行的退出狀態碼,所以使用函數的默認退出狀態碼是很危險的。

17.2.2使用return命令

bash shell使用return命令來退出函數並返回特定的退出狀態碼。return命令允許指定一個整數值來定義函數的退出狀態碼,從而提供了一種簡單的途徑來程式設計設定函數退出狀態碼。

注:(1)函數一結束就取返回值;(2)退出狀態碼必須是0~255。

17.2.3使用函數輸出

17.3在函數中使用變數

17.3.1向函數傳遞參數

函數可以使用標準的參數環境變數來表示命令列上傳給函數的參數。函數名會在$0變數中定義,函數命令列上的任何參數都會通過$1、$2等定義。

也可以用特殊變數$#來判斷傳給函數的參數數目。

17.3.2在函數中處理變數

1.全域變數

全域變數是在shell腳本中任何地方都有效的變數。默認情况下,在腳本中定義的任何變數都是全域變數,在函數外定義的變數可在函數內正常訪問。

2.局部變數

無需在函數中使用全域變數,函數內部使用的任何變數都可以被聲明成局部變數。

local關鍵字可以將變數變為局部變數。也可以在變數賦值語句中使用local關鍵字。

17.4數組變數和函數

17.4.1向函數傳數組參數

17.5函數遞迴

局部變數的一個特性是自成體系,除了從腳本命令列處獲得的變數,自成體系的函數不需要使用任何外部資源。

17.6創建庫

bash shell允許創建函式程式庫檔案,然後在多個腳本中引用該庫檔案。

source命令會在當前shell上下文中執行命令,而不是創建一個新shell,可以用source命令來在shell腳本中運行庫檔案腳本,這樣腳本就可以使用庫中的函數了。

17.7在命令列上使用函數

17.7.1在命令列上創建函數

17.7.2在.bashrc檔案中定義函數

在命令列上直接定義shell函數的缺點時退出shell時,函數就消失了,一個簡單的方法就是將函數定義在一個特定的位置,在每次啟動一個新shell時都會由shell重新載入,最佳地點就是.bashrc檔案,bash shell在每次啟動時都會在主目錄下查找這個檔。

可以在.bashrc檔案中直接定義函數,也在檔案中讀取其他函數檔案來定義函數,下次啟動shell時,所有函數都可以在命令列介面下使用了。

資料標籤:
本文標題: 《Linux命令行與shell脚本編程大全》第17章
永久網址: https://www.laoziliao.net/doc/1699694083687181
相关資料
《Linux系統命令與Shell脚本編程大全》第二十六章,學習筆記
發送消息Shell腳本也可以向登入用戶發送消息。
標籤:
禪道擴展機制
加載模塊control檔案時,先判斷有沒有被擴展過,如果擴展過,則引入擴展下的檔案;同一個模塊下的所有model擴展檔案會被加載到tmp/model下運行。
標籤:
Bug強制歸因挿件學習分享
1.找到bug歸因挿件,將外掛程式包壓縮後,在旗艦版安裝外掛程式。2.安裝後會發現在bug詳情頁會顯示歸因按鈕。
標籤:
沒人可以對我的程式碼指指點點,搭子除外!
近期,#搭子是一種新型社交關係#上了熱搜。我們是飯飯之交,而不是泛泛之交。
標籤: