
一、函數的定義與調用1.1 定義函數函數用于將重復使用的命令集合封裝起來提高代碼復用性。functionfname(){# 命令 Command}函數名后的空括號 () 表明正在定義的是一個函數命令規則和定義 Shell 腳本函數的格式一致1.2 調用函數之后在腳本中使用函數時只需像其他 Shell 命令一樣在代碼行中指定函數名即可fname二、參數變量2.1 傳遞參數函數可以接收外部傳入的參數通過位置變量獲取變量含義$1第一個參數$2第二個參數$3第三個參數...…$n第 n 個參數$#參數個數$*/$所有參數$?上一個命令/函數的退出狀態碼2.2 局部變量使用 local 關鍵字聲明函數作用域內的變量避免污染全局命名空間local變量名示例使用局部變量避免外部影響#!/bin/bash# 檢查進程是否存在checkpid(){# 定義函數名為 checkpidlocalindex# 聲明局部變量 index只在函數內有效不影響外部同名變量forindexin$*;do# 遍歷傳入的所有參數$* 表示所有位置參數 $1 $2 $3...[-d/proc/$index]return0# 檢查 /proc/PID 目錄是否存在# 若存在說明該進程正在運行立即返回 0成功/真donereturn1# 循環結束沒有一個 PID 存活返回 1失敗/假}三、返回值Shell 函數通過 return 語句返回狀態碼0-255functionmy_func(){# 執行邏輯if[條件成立];thenreturn0# 成功elsereturn1# 失敗fi}my_funcecho$?# 獲取返回值 注意return 只能返回整數狀態碼。如需返回字符串或其他數據可通過 echo 輸出并用命令替換捕獲四、系統函數庫4.1 系統自帶函數庫Linux 系統自建了函數庫路徑為/etc/init.d/functions可以在腳本中引用source/etc/init.d/functions# 然后即可使用系統定義的函數actionStarting service.../bin/true4.2 自建函數庫將常用函數封裝到獨立腳本文件中通過 source 導入# mylib.shsay_hello(){echoHello,$1!}# main.shsource./mylib.sh say_helloWorld source 也可以用 . 代替. ./mylib.sh