Shell 函数

shell 可以用户定义函数,然后在shell脚本中可以随便调用;shell中函数的定义格式如下:

 [function]  funname [()]

{

    action;

    [return int;]

}

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值, return后跟数值n(0-255)

下面的例子定义了一个函数并进行调用:

下面定义一个带有return语句的函数:

函数返回值在调用该函数后通过 $? 来获得

注意:所有函数在使用前必须定义,这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用;调用函数仅使用其函数名即可

函数参数

在Shell中,调用函数时可以向其传递参数;在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...第10个参数需要使用{}

带参数的函数示例:

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数;

另外,还有几个特殊字符用来处理参数:

数组作为函数参数

可以将数组作为一个整体传递给函数,格式如上面的例子所示,同时函数也可以返回一个数组,如下:

return 和 exit

return是语言级别的一个关键字,用于结束函数并返回一个结果,return不带参数时,则会返回函数体中最后一个命令的返回值;

由于 return 返回值的范围为0~255,所以当返回值大于255时会出错,如果将上面的 return 语句后的返回值参数去掉,结果如下:

可见,return 默认返回的是最后一条命令的状态码,同时将这个返回值赋给 $?,状态码为0表示正常退出,非0表示非正常退出;

如果要返回大于255的值,可以将函数的输出赋给变量,如下:

shell 中函数如果不显示添加 return 语句,则以最后一条语句的执行结果作为返回值,上面fun1 的最后一条语句的结果为400,所以返回值为400;

exit 是 shell 的内建命令,用于退出当前的 shell 进程,使用格式如下:

exit [<n>]

可以指定退出状态n,取值范围为0-255,一般情况下 0 表示正常退出,非0表示异常退出;状态码 n 可以不指定,默认是上一条命令的状态退出码;

局部变量和全局变量

shell中的变量默认是全局变量,不管是在shell脚本中定义的还是函数中定义的;对于函数中定义的变量,可以使用 local 关键字来将其作用域限定为 函数内,也就是局部变量

注意,这里需要先执行函数fun1才能定义变量a,之后才能引用;如果将a 加上 local 关键字后,结果如下:

系统函数

  • basename 基本语法

                  功能: 返回完整路径最后 / 的部分, 常用于获取文件名
                 basename [pathname] [suffix]

      (功能描述: basename 命令会删掉所有的前缀包括最后一个(‘/’ )字符, 然后将字符串显示出来。

  • 选项:

                 suffix 为后缀, 如果 suffix 被指定了, basename 会将 pathname 或 string 中的 suffix 去掉

  • dirname 基本语法

                功能: 返回完整路径最后 / 的前面的部分, 常用于返回路径部分
                dirname   文件绝对路径

(功能描述: 从给定的包含绝对路径的文件名中去除文件名(非目录的部分) , 然后返回剩下的路径(目录的部分) )


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值