函数是一个脚本代码块,你能够对它进行自定义命名,而且能够在脚本中任意位置使用这个函数。若是想要这个函数,只要调用这个函数的名称就能够了。使用函数的好处在于模块化以及代码可读性强。vim
(1).函数的建立语法bash
函数的建立方法一:模块化
function 函数名称 { 命令 }
函数的建立方法二:函数
函数名称() { 命令 }
注意:函数名称在当前脚本必须惟一。spa
调用函数的方法:blog
函数名称 参数1 参数2 ......
调用函数时能够传递参数,函数中使用$一、$2......来引用传递的参数。it
(2).函数的使用实例io
实例1:function
[root@youxi1 ~]# vim a.sh #!/bin/bash function fun1 { echo "hello world" } fun2() { echo $[$1+$2] } fun1 fun2 1 2 [root@youxi1 ~]# sh a.sh hello world 3
实例2:若是存在相同名称的函数,以最后一个为准class
[root@youxi1 ~]# vim b.sh #!/bin/bash function fun1 { echo "hello world" } fun1() { echo "This is rewrite" } fun1 [root@youxi1 ~]# sh b.sh This is rewrite
(3).return返回值
使用return命令来退出函数并返回特定的退出码($?)
[root@youxi1 ~]# vim c.sh #!/bin/bash fun1() { echo "return 3" return 3 echo "why?" } fun1 [root@youxi1 ~]# sh c.sh return 3 [root@youxi1 ~]# echo $? 3
注意:return通常是在函数的最后一行,由于一旦执行return命令,该函数后面的命令就不执行了。
return与exit的区别:return和exit均可以返回退出码,可是不一样的是,return是退出函数,而exit是退出整个脚本。
(4).函数值赋给变量
以下方实例中显示,此时的函数就至关于一个命令,须要使用$()或``调用。
[root@youxi1 ~]# vim d.sh #!/bin/bash fun1() { read -p "Input a number:" num echo $[num*5] } num2=`fun1` #也能够是$(fun1) echo $num2 [root@youxi1 ~]# sh d.sh Input a number:2 10
(5).外部参数传入函数
前面已经提到过,调用函数能够在后面跟随参数,函数内部能够使用$n的形式调用。
[root@youxi1 ~]# vim e.sh #!/bin/bash fun1() { echo $1 } fun2() { echo $1 } fun3() { echo $1 } fun1 $1 fun2 /root/a.sh fun3 5 [root@youxi1 ~]# sh e.sh hello hello /root/a.sh 5
(6).函数的参数
在一个脚本当中,函数外的参数,函数能够直接调用,而且函数内的参数,只要运行过函数,外部也能够直接调用。
[root@youxi1 ~]# vim f.sh #!/bin/bash num=5 fun1() { num2=$[num*10] } fun1 echo $num2 [root@youxi1 ~]# sh f.sh 50
注意:脚本内的参数仅限脚本内使用