【前端&运维那点事儿】十二:Shell编程之函数

1,063 阅读3分钟

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

Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~

🍇 写在前面

先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。

在这篇文章中我们将来学习一下Shell中的函数,包括如下内容:

  • 函数的定义
  • 函数的使用
  • 函数参数的传递
  • 函数的返回值

🍍 函数的定义

在Shell中也是可以定义函数,它的语法结构如下:

[ function ] funcname ()
{
    函数体
    [return int;]
}

这个语法与JavaScript中非常相似,它的这个function关键字是可以省略的,不过最好不要这样做,这样总是缺少了那么一点的语义化。

下面这段代码定义了一个简单的函数:

#!/bin/bash
function hello()
{
  echo hello
}

一个非常简单的函数就这样定义完成了。

🍌 函数的调用

在Shell中调用函数非常简单,只需要直接使用函数名即可,例如上面定义的函数,调用代码如下:

#!/bin/bash
function hello()
{
  echo hello
}

# 函数的调用
hello

如果需要传递参数,只需要是使用空格拆分即可,例如:

hello 1 2 3 4

这里就传递了4个参数,在shell中如何使用参数我们下面介绍。

🍋 Shell中的参数

在Shell中使用参数不需要写明了形参,它是使用$n的方式,例如$1就是第一个参数,$2就是第二个参数,以此类推;

例如我们计算两个数的和,示例代码如下:

#!/bin/bash
function sum()
{
  echo $(( $1+$2 ))
}
sum 1 2            # 输出3

除了$n之外,还可以使用$*表示所有变量、$0函数本身$#表示参数的个数等,更多参数变量可以参考变量那一篇文章。

下面这个例子可以实现计算多个参数的和,示例如下:

#!/bin/bash
function sum()
{
    echo "一共$#个数字求和"
    echo "他们分别是$*"
    sum=0
    for i in $*
    do
        (( sum+=i ))
    done
    echo "它们的和是$sum"
}
sum 4 21 34 41 45

运行结果如下:

一共5个数字求和
他们分别是4 21 34 41 45
它们的和是145

🍊 函数的返回值

在JavaScript中,函数的返回值默认是undefined,而在Shell中函数的返回值是最后一条命的执行状态,示例如下:

#!/bin/bash
function r()
{
    ls
}
l=$(r)
echo $l

此时变量l的结果就是当前目录的所有文件。

还有一点需要注意的是,实际上Shell函数的返回值实际上表示的函数的退出状态,只有当返回值为0的时候才表示成功,其他的数值都表示失败;且Shell函数的返回值只能是0~255的整数

实际上上面的函数完整写法应该是下面这样:

#!/bin/bash
function r()
{
    ls
    return $?
}
l=$(r)
echo $l

$?的就是获取上一个命令的执行状态。

🍉 写在最后

本篇文章到这就结束了,这篇文章中介绍了Shell中的函数,这篇文章也是Shell系列的最后一篇文章,该系列的其他文章如下:

如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~

如果对这个专栏感兴趣可以点一个关注呦~