函数的使用

两中格式用来定义函数:

fcuntion name {} 注意name和{之间有空格

name() {commands}

函数的使用:

#!/bin/bash
function fun1 {   //<span style="color:#FFFFFF;"><span style="background-color: rgb(255, 0, 0);">一定注意函数名和{之间的空格</span></span>
        echo "this is function"
}

count=1

while [ $count -le 5 ]
do
        fun1
        count=$[ $count+1 ]
done

注意: 函数必须先定义在使用


返回值:

假设此时没有michael文件

#!/bin/bash
function fun1 {
        echo "this is func1"
        ls -l mimchael
        echo "end fun1"
}

echo "testing the function"
fun1
echo "show the return value $?"

此时,可以知道状态为0,因为最后一条echo语句执行无误。如果没有最后一条echo,返回吗为2,因为没有michael文件,该条语句执行有误。

为了让自己可以掌控状态码,可以用return和函数输出

return:

#!/bin/bash
function fun {
        read -p "input the value" value
        echo "double the value"
        return $[ $value*2 ]
}

fun
echo "return value is $?"
~                                

需要说明一点 。他这里的返回值表示的是状态吗,数值在0-255之间,超出就会报错。这里的返回值和Java、C是有区别的

函数输出:

为了解决0-255之间的问题,使用

函数输出。

#!/bin/bash
function fun {
        read -p "input the value" value
        echo  $[ $value*2 ]   <span style="color:#FF0000;">//注意这是echo,不是return</span>
}

result=`fun`
echo "return value is $result"   


函数中使用变量:

具体用法和shell中的用法相同。

#!/bin/bash
function fun {
        if [ $# -eq 0 ] || [ $# -gt 2 ]
        then
                echo "para is too much or little"
        elif [ $# -eq 1 ]
        then
                echo $[ $1+$1 ]
        elif [ $# -eq 2 ]
        then
                echo $[ $1+$2 ]
        fi
}

echo -n  "Adding 10 and 15 " 
value=`fun 10 15`
echo $value

echo -n  "DOUBLE 10 "
value=`fun 10`
echo $value

echo -n  "no para"
value=`fun`
echo $value

echo  -n "too much para"
value=`fun 1 2 3`
echo $value


变量的作用域:

全局变量:默认情况下,在shell脚本中任何地方申明的值都是全局变量,包括在函数内申明的值。

局部变量:在函数内部申明变量时,加上local关键字即可。

#!/bin/bash
function fun1 {
        local temp=$[ $value+5 ]
        result=$[ $temp*2 ]
}
temp=4
value=6

fun1

echo "the result is $result"

if [ $temp -gt $valule ]
then
        echo "temp  is large"
else
        echo "temp is small"
fi

数组变量和函数:

如果需要将一个数组的数据传入到函数之中:需要如下操作:

#!/bin/bash
function testit {
        echo "there is $# params"
        thisarray=(`echo "$@"`)    //<span style="color:#FF0000;">从命令行参数重建该数组变量</span>
        echo "the receive array is ${thisarray[*]}"
}

myarray=(1 2 3 4 5)

echo "the original array is:${myarray[*]}"
testit ${myarray[*]}
~                         
如果需要返回一个数组呢?

function fun {
local oriArray
local newArray
local length=$[ $#-1 ]
oriArray=(`echo "$@"`)
for(( i=0;i<=length;i++)){
newArray[$i]=$[ ${oriArray[$i]}*2 ]
}
echo ${newArray[*]}
}

oriArray=(1 2 3 4 5)
echo "ori Array is ${oriArray[*]}"

arg1=(`fun ${oriArray[*]}`)         //主要是接受的形式:<span style="color:#FF0000;"> (`函数名 参数`)</span>
echo "the new array is ${arg1[*]}"

创建库

如果在一个脚本中定义了一个函数,如果说次函数需要被多个其他脚本使用。应该怎么做呢?

需要在新的脚本中引用一下函数脚本:

. ./函数脚本明  //注意之间有空格



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值