Shell——函式
阿新 • • 發佈:2021-07-26
目錄
1、定義
將命令序列按格式寫在一起,可方便重複使用命令序列
//方式一 function 函式名 { 命令序列 } //方式二 函式名() { 命令序列 }
2、函式返回值
return表示退出函式並返回一個退出值,指令碼中可以用$?變數顯示該值
2.1 使用原則
- 函式一結束就取返回值,因為$?變數只返回執行的最後一條命令的退出狀態碼
- 退出狀態碼必須是0~255,超出時值將為除以256取餘
#!/bin/bash function test1 { read -p "請輸入一個值:" value #return $[$value * 2] echo $[$value * 2] } result=$(test1) #echo $result echo $[$result * 2]
1、函式變數的作用範圍
函式在Shell指令碼中僅在當前Shell環境中有效,
Shell指令碼中變數預設全域性有效,
將變數限定在函式內部使用local命令
#!/bin/bash myfunc() { i=10 local i i=8 echo $i } i=9 myfunc echo $i
函式呼叫自己本身的函式
1、階乘
#!/bin/bash fact() { if [ $1 -eq 1 ];then echo 1 else local temp=$[$1 - 1] local result=$(fact $temp) echo $[$1 * $result] fi } read -p "請輸入一個階乘的數字:" n result=$(fact $n) echo "$n 的階乘結果是 $result"
#!/bin/bash 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" -a ! -L "$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