shell脚本函数的创建与使用

函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数,要使用这个函数,只要使用这个函数名称就可以了。使用函数的好处:模块化,代码可读性强。

函数创建语法

方法1:

function name {

              commands

}

注意:name是函数唯一的名称


方法2:name后面的括号表示你正在定义一个函数

name(){

              commands

}

 

调用函数语法:

函数名 参数1 参数2 …

调用函数时,可以传递参数。在函数中用$1、$2…来引用传递的参数

函数的使用

例1:

[root@xuegod63 ~]# cat fun-1.sh

#!/bin/bash

function fun_1 {    #定义函数

        echo "this is function"

}

fun_1   #调用函数

 

注意:函数名的使用,如果在一个脚本中定义了重复的函数名,那么以最后一个为准

[root@xuegod63 ~]# cat fun-1.sh

#!/bin/bash

function fun_1 {

        echo "this is function"

}

function fun_1 {

        echo "this is 2222222"

}

fun_1

[root@xuegod63 ~]# bash fun-1.sh

this is 2222222

返回值

使用return命令退出函数并返回特定的退出码

例1:

[root@xuegod63 ~]# vim fun-1.sh

#!/bin/bash

function fun_1 {

        echo "this is function"

        ls /etc/passwd

        return 3

}

fun_1

 

[root@xuegod63 ~]# bash fun-1.sh   #查看结果

this is function

/etc/passwd

[root@xuegod63 ~]# echo $?

3

 

注:状态码的确定必需要在函数一结束就运行return返回值;状态码的取值范围(0~255)

 

互动: exit 数字 和return 数字的区别?

exit整个脚本就直接退出,往回数字  ;  return 只是在函数最后添加一行,然后返回数字,只能让函数后面的命令不执行,无法强制退出整个脚本的。

把函数值赋给变量使用

例子: 函数名就相当于一个命令

[root@xuegod63 ~]# cat fun-3.sh

#!/bin/bash

fun1(){

        read -p "Input a value: " va

        echo $[$va*5]

}

num=$(fun1)

echo current num is $num

[root@xuegod63 ~]# sh fun-3.sh

Input a value: 22

current num is 110

函数的参数传递

第一种:通过脚本传递参数给函数中的位置参数$1

[root@xuegod63 ~]# cat fun-4.sh a.txt

#!/bin/bash

fun1(){

        rm -rf $1

}

fun1 $1  

第二种:调用函数时直接传递参数

[root@xuegod63 ~]# touch  /root/a.txt  #创建一个测试文件

[root@xuegod63 ~]# cat fun-4.sh

#!/bin/bash

fun1(){

        rm -rf $1

}

fun1 /root/a.txt

[root@xuegod63 ~]# bash fun-1.sh    #测试

[root@xuegod63 ~]# ls /root/a.txt

ls: 无法访问/root/a.txt: 没有那个文件或目录

 

第三种:函数中多参数传递和使用方法

[root@xuegod63 ~]# cat fun-5.sh

#!/bin/bash

fun1(){

        echo $[$1*5]

        echo $[$2*2]

}

fun1 5  2   #直接传两个参数

 

[root@xuegod63 ~]# bash fun-1.sh   #测试

25

4

函数中变量的处理

函数使用的变量类型有两种:

局部变量

全局变量

1、全局变量,默认情况下,你在脚本中定义的变量都是全局变量,你在函数外面定义的变量在函数内也可以使用

例子:

[root@xuegod63 ~]# cat fun-5.sh

#!/bin/bash

function fun1 {

        num1=$[var1*2]

}

read -p "input a num:" var1

fun1

echo the new value is: $num1

 

[root@xuegod63 ~]# bash fun-1.sh

input a num:2

the new value is: 4

版权声明:
作者:WaterBear
链接:https://l-t.top/1640.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>