1. 函數 (Functions)
定義與優勢
函數是可重復使用的功能模塊
優勢:代碼復用,直接調用解決問題
分類
內置函數:編程語言自帶的函數(如?
print
)自定義函數:程序員自己編寫的函數
定義語法
# 方式一 function 函數名() {程序段[return int;] }# 方式二 函數名() {程序段[return int;] }
調用方式
直接使用函數名調用:
函數名
必須先定義后調用
參數傳遞
通過?
$n
?獲取參數($1
?第一個參數,$2
?第二個參數,等等)當 n≥10 時,需使用?
${n}
?格式
返回值
使用?
return
?返回數據(只能返回 0-255 的整數)返回值存儲在?
$?
?中如果不加 return,將以最后一條命令運行結果作為返回值
2. 數組 (Arrays)
定義方式
# 方式一 數組名=(值1 值2 值3 ... 值N)# 方式二(索引定義) 數組名[索引]=值
讀取數組
${數組名[索引]} # 讀取單個元素 ${數組名[*]} # 讀取所有元素 ${數組名[@]} # 讀取所有元素 ${#數組名[*]} # 獲取數組長度 ${#數組名[@]} # 獲取數組長度
遍歷數組
# 方式一 for 變量 in ${數組名[*]} doecho $變量 done# 方式二 for((i=0; i<數組長度; i++)) doecho ${數組名[$i]} done
3. 加載其他文件變量
語法
. 文件名 # 注意點號和文件名間的空格 source 文件名
案例:查看root用戶的CPU、內存使用情況及顯示主機名和查看時間
優勢
數據源和業務處理分離
代碼復用和擴展性更強
4. 綜合案例:猜數字游戲
游戲規則
程序內置 1-100 之間的隨機數
用戶猜測數字,系統提示"大了"、"小了"或"猜對了"
直到用戶猜對,游戲結束
核心實現
#!/bin/bash num=$[RANDOM%100+1] # 生成1-100的隨機數while true doread -p "請輸入猜測的數字: " caiif [ $cai -eq $num ]; thenecho "恭喜,猜對了"exitelif [ $cai -gt $num ]; thenecho "猜大了"elseecho "猜小了"fi done
關鍵要點總結
函數必須定義在調用之前
函數參數通過 $1, $2... 獲取
函數返回值通過 return 和 $? 處理
數組元素用空格分隔,索引從0開始
使用 source 或 . 加載外部文件變量
RANDOM 變量生成隨機數