1. 程式人生 > 其它 >Shell——函式

Shell——函式

目錄

一、函式

二、函式傳參

三、遞迴

四、遞迴目錄

五、建立庫

一、函式

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

五、建立庫