Shell 函数

linux shell 能够用户界说函数,而后在shell剧本中能够随意挪用。

shell中函数的界说格局以下:

 function  funname ()

{

    action;

    return int;

}

申明:

  • 1、能够带function fun() 界说,也能够间接fun() 界说,不带任何参数。
  • 2、参数前往,能够显现加:return 前往,若是不加,将以最初一条号令运转成果,作为前往值。 return后跟数值n(0-255

上面的例子界说了一个函数并停止挪用:

#!/bin/bash
# author:【WEB手艺大学】教程
# url:xfitphysio.com

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数起头履行-----"
demoFun
echo "-----函数履行终了-----"

输入成果:

-----函数起头履行-----
这是我的第一个 shell 函数!
-----函数履行终了-----

上面界说一个带有return语句的函数:

#!/bin/bash
# author:【WEB手艺大学】教程
# url:xfitphysio.com

funWithReturn(){
    echo "这个函数会对输入的两个数字停止相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字别离为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

输入近似上面:

这个函数会对输入的两个数字停止相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字别离为 1 和 2 !
输入的两个数字之和为 3 !

函数前往值在挪用该函数后经由过程 $? 来取得。

注重:一切函数在利用前必须界说。这象征着必须将函数放在剧本起头局部,直至shell诠释器初次发明它时,才能够利用。挪用函数仅利用其函数名便可。


函数参数

在Shell中,挪用函数时能够向其通报参数。在函数体外部,经由过程 $n 的情势来获得参数的值,比方,$1表现第一个参数,$2表现第二个参数...

带参数的函数示例:

#!/bin/bash
# author:【WEB手艺大学】教程
# url:xfitphysio.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输入一切参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

输入成果:

第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输入一切参数 1 2 3 4 5 6 7 8 9 34 73 !

注重,$10 不能获得第十个参数,获得第十个参数须要${10}。当n>=10时,须要利用${n}来获得参数。

别的,另有几个特别字符用来处置参数:

参数处置 申明
$# 通报到剧本或函数的参数个数
$* 以一个单字符串显现一切向剧本通报的参数
$$ 剧本运转确当进步程ID号
$! 背景运转的最初一个历程的ID号
$@ 与$*不异,可是利用时加引号,并在引号中前往每一个参数。
$- 显现Shell利用确当前选项,与set号令功效不异。
$? 显现最初号令的加入状况。0表现不毛病,其余任何值标明有毛病。