持续创作,加速成长!这是我参与「掘金日新计划 · 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系列的最后一篇文章,该系列的其他文章如下:
如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~
如果对这个专栏感兴趣可以点一个关注呦~