函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。
(1).函数的创建语法
函数的创建方法一:
function 函数名称 { 命令 }
函数的创建方法二:
函数名称() { 命令 }
注意:函数名称在当前脚本必须唯一。
调用函数的方法:
函数名称 参数1 参数2 ......
调用函数时可以传递参数,函数中使用$1、$2......来引用传递的参数。
(2).函数的使用实例
实例1:
[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:如果存在相同名称的函数,以最后一个为准
[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
注意:脚本内的参数仅限脚本内使用