shell腳本(函數定義及參數調用)

                                        函數的定義及參數調用
shell

函數是完成特定功能的代碼片斷,在shell中定義函數可使用代碼模塊化,便於調用,函數必須先定義纔可使用。數組

1、定義函數的方式bash

方法一:ide

函數名() {模塊化

        函數要實現的功能代碼函數

}spa


方法二:orm

function 函數名 {索引

        函數要實現的功能代碼it

}


2、調用參數

函數名 變量

函數名 變量從新賦值

函數名 位置變量$1 $2 $3.....

如下是函數傳參的一些示例

函數位置變量的傳遞

#!/bin/bash
########函數的位置參數傳遞
if [ $# -ne 3 ];then  #若是腳本後接的參數不等於3個,那麼則打印腳本用法並退出
        echo "usage: : `basename $0` par1 par2 par3"    
        exit
fi
fun() {
        echo "$[$1 * $2 * $3]"
        #這裏的$1 $2 $3是函數的位置參數
}
result=`fun $1 $2 $3`
#而這裏的$1 $2 $3是腳本的接受的位置參數,而fun函數將腳本接受的位置參數傳遞到了函數中
echo "$result"


函數調用數組變量中的數值

#################
#該腳本先定義數組,其中有1-5個值,然後定義一個arry函數,做用是接收外部參數num的數值,而且每次取值與sum值相乘
num=(1 2 3 4 5) #定義數組num
sum=1           #定義sum初始值爲1
#定義函數array
arry() {
        for i in "$@"    # "$@" 爲全部參數 $* 也表明全部參數,不須要加「」
        do
        let sum*=$i     #sum的值與$i讀取的值相乘,再賦值給本身
        done
}
arry ${num[@]}          # 執行函數array,讀取$num中的值.
echo $sum


#!/bin/bash
#以上腳本做用和該腳本相同,執行腳本時帶數字參數,for循環全部數字,逐個給sum2相乘
sum2=1
for j in $*
do
        let sum2*=$j
done
echo $sum2

       

如下例子舉例如何從定義變量中拿參數並從新賦值給函數中變量

local 變量名 是爲了避免與其餘變量衝突,只在該函數中生效,不影響全局

#!/bin/bash
##############
#接收變量從新賦值
#傳遞參數到函數中,而且從新計算賦值
################
num=( 1 2 3 )   #賦值數組num
#定義函數array
array() {
        local newnum=($*)    #定義函數局部變量newnum
        local i              #定義函數局部變量i
        for ((i=0;i<$#;i++)) #  $#爲接收的全部參數 $*同理 此行即爲 $i起始值爲0,給下面new做爲索引,索引值<$#
        do
        product[$i]=$[${newnum[$i]} * 5]  #將每次遍歷newnum數組的值乘以5,從新賦值給new
        done
}
array ${num[@]}  #調用函數array
echo ${product[@]} #輸出$num數組的值


小擴展,函數返回值

#!/bin/bash
###
##funtion的函數返回值 return
############
fun() {
        read -p "enter number: " num
        let sum=2*$num
        #返回$?的值
        return $[2*$num]
}
fun
#shell的返回值不能超過255,不管你輸入什麼數字,以上運算返回的值都在255之內
echo "fun return value: $?"
相關文章
相關標籤/搜索