shell指令碼—函式用法
阿新 • • 發佈:2021-07-20
目錄
一、定義
將命令序列按格式寫在一起,可方便重複使用命令序列
二、格式
2.1 格式一
function 函式名 {
命令序列
}
2.2 格式二
函式名() {
命令序列
}
三、函式返回值
return表示退出函式並返回一個退出值,指令碼中可以用 $?變數顯示該值
使用原則:
1)函式一結束就取返回值,因為$?變數只返回執行的最後一條命令的退出狀態碼
2)退出狀態碼必須是0~255,超出時值將為除以256取餘
四、函式傳參
五、函式變數的作用範圍
1.函式在Shell指令碼中僅在當前Shell環境中有效
2.Shell指令碼中變數預設全域性有效
3.將變數限定在函式內部使用local命令
六、遞迴
6.1 階乘
6.1.1 指令碼命令
fact () { if [ $1 -eq 1 -o $1 -eq 0 ];then echo 1 elif [ $1 -gt 1 ];then local temp=$[$1 - 1] local result=$(fact $temp) echo $[$1 * $result] else echo "不存在" fi } esult=$(fact $1) echo "$1 的階乘$result"
6.1.2 操作驗證
6.2 遞迴目錄檔案
6.2.1 需求
1.mkdir -p /root/bin/aa/bb/cc/dd
2.touch /root/bin/aa/bb/cc/dd/abc.txt
3.輸出環境變數PATH所包含的所有目錄以及其中的子目錄和所有不可執行檔案
6.2.2 指令碼命令
list_files() { for i in $(ls $1) do if [ -d "$1/$i" ];then echo "$2$i" list_files "$1/$i" " $2" else if [ ! -x "$1/$i" ];then echo "$2$i" fi fi done } #-------------main--------- OLDIFS=$IFS IFS=$IFS':' for folder in $PATH do echo $folder list_files "$folder" " " done IFS=$OLDIFS
6.2.3 操作驗證