一、函數的定義和使用
第一種格式:
name()
{
xxxxx
}
第二種格式:
function name
{
xxxxx
}
調用直接使用函數名調用,函數內部可以直接使用參數$1..
二、函數傳遞參數
shell中傳參不需要在函數名後面加參數,可以直接在函數中使用參數$1、$2...;調用函數時可直接用 functionname $1 $2..
三、函數返回值
(1)return:只能返回1-255的整數,供其他地方調用獲取狀態,通常返回0或1:0代表成功,1代表失敗
(2)echo:可以返回任何字符串結果,返回數據。
擴展:
(1)shell中的&&和||
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,&&右邊的命令(命令2)才能夠被執行;
||則與&&相反。如果||左邊的命令(命令1)未執行成功,那麼就執行||右邊的命令(命令2);
(2)sh -x:腳本調試,顯示腳本執行過程
例1:定義一個函數查看某個進程存在則return0
例2:查看系統所有用戶,定義函數返回值
三、局部變量和全局變量
local:定義局部變量,只能在函數內
函數內和函數外存在同名變量,則函數內會覆蓋外部
四、函數庫
經常使用重複的代碼封裝成函數文件,一般由其他腳本調用。
例1:定義一個函數庫,計算器
我們在一個shell腳本中調用格式 . 文件絕對路徑
例2:打印系統運行情況函數sys_load,顯示內存運行情況和磁盤的情況。
在命令行調用函數庫
擴展:
庫文件後綴通常.lib結尾
庫文件通常沒有x權限即可執行權限
庫文件無需和腳本同級目錄
第一行通常使用 #!/bin/echo,輸出警告信息,避免用戶執行