shell(八)函数方法

100 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

从这讲开始,我们要开始看shell的方法结构了 在其他的开发语言里,比如说我们看到频繁调用的某些执行逻辑,我们会将其拿出来写成一个公共方法,到需要用到这块逻辑的时候直接拿出来调用即可,那shell也是如此,下面我们看看在shell中如何定义方法(函数); 

函数方法(无参)

shell的函数定义有两种**[ function ] 函数名 (){ 方法体 },如果有返回值,方法体里加上return返回即可;那如何调用这个函数呢 其实只要写上函数名就行了,对于return回来的返回值,我们可以通过$?**来获取返回的值,这里要注意,

  • 对于同文件的函数方法,我们要将其写在调用该方法的语句上面,因为shell按顺序解释,如果你不放上面会报错的;
  • 对于不同文件的函数调用,我们像java引入类似,要引入该文件,shell的引入是source xxx.sh(还有其他两种,需要可以自行百度);然后就可以直接调用里面方法了

下面看用例;

#!/bin/bash
function aaa() {
echo "我是method的aaa"
}
aaa
bbb
function bbb() {
echo "我是method的bbb"
}

返回的是:(这里的bbb方法由于写的顺序问题,会报错找不到)

我是method的aaa
method.sh: line 6: bbb: command not found

我们再建一个文件,来调用和这个method文件里的方法;

#!/bin/bash
#引入文件
source /root/method.sh
ccc(){
echo "我是userme的CCC"
}
aaa
bbb
ccc

返回的是:(这里注意source引入的文件的路径,别读不出来文件,可以pwd看下)

我是method的aaa
我是method的bbb
我是userme的CCC

函数方法(有参)

对于有参传递有一个表达式,我们看下图:我这里挑几个说,其他的了解即可;

看下我们相加的用例:在我们写过方法体,记得写调用语句(这里我是执行的时候就给定参数,#表示我传进来的参数,虽然我方法体写了三个,但如果执行该脚本的时候传两个,#就会显示两个,不像我们的应用语言是按你写的形参计数的

add(){
return $(($1+$2))
}
add $1 $2 $3
echo "$# 个参数结果是 $? "

这里看了其他文章,有一个注意项要注意:当参数大于10个的时候,需要使用${n}来获取参数;多了一个大括号,我们看下两种传输返回的结果:

sh method.sh 1 2

这个返回的是2 个参数结果是 3

sh method.sh 1 2 3

这个返回的是3 个参数结果是 3

上面就是验证情况,这点还是挺独特的,整体来说只要我们学过开发语言,shell的方法体是很简单的,基本差不多,好啦🥗🥗🥗;

结束结束,那就🛴🛴🛴