Shell基础之函数和数组

目录

函数

什么是函数

函数的语法

函数的调用

函数的返回值

函数的案例

函数变量的作用域

递归函数

函数库文件

数组

定义数组语法

数组操作

获取所有元素

获取元素下标

获取数组长度

获取数组元素

数组添加元素

删除数组元素

删除数组

遍历数组元素

数组案例


函数

什么是函数

        所谓函数,与其他语言中的函数没有太大的本质区别。它们是完成特定功能的代码块,这个代码块是可以重复使用的,并是一组命令或者语句组成

        在Shell中,函数本质上就是将函数名称与要实现的特殊功能的代码进行引用的一种方式

在Shell中函数具有以下的优势

把相同的程序代码定义函数,这样就可以重复利用,从而提长开放的效率
增加了程序代码段的可读性和提升管理效率
可以实现程序功能的模块化。使得程序具备通用性

函数的语法

在Shell中,函数具有以下的语法结构:

#完整结构
function 函数名称() {
    指令或语句
    return [返回值]
}

#简化结构
function 函数名称 {
    指令或语句
    return [返回值]
}

#进一步简化的结构
函数名称() {
    指令或语句
    return [返回值]
}

函数的调用

        在Shell中,调用函数之前,该函数必须存在

调用函数的基本语法如下:

函数名称 [参数1 参数2 参数3 ......]

        对于函数的调用,可以有以下方法:

$# 获取参数的个数
$1、$2、$3...... 获取是第几个参数
$@ 或者 $* 获取所有的参数列表

示例:

        定义一个名称叫 fun 的函数,并且调用 fun 函数

[root@openEuler ~]# cat fun1.sh
#!/bin/bash

# 定义一个名称叫 fun 的函数
fun() {
        echo "the function has $# parameters"
        echo "all parameters $@"
        echo "first parameter $1"
        echo "second parameter $2"
}

# 调用定义好的 fun 函数
fun hello world


[root@openEuler ~]# bash fun1.sh 
the function has 2 parameters
all parameters hello world
first parameter hello
second parameter world
[root@openEuler ~]# 

注意:

        在Shell中,函数是先定义再使用,如果是先使用再定义,就会报错

报错示例:

[root@openEuler ~]# cat fun1.sh
#!/bin/bash

#先调用 fun 函数
fun hello world

# 再定义 fun 函数
fun() {
        echo "the function has $# parameters"
        echo "all parameters $@"
        echo "first parameter $1"
        echo "second parameter $2"
}

[root@openEuler ~]# bash fun1.sh 
fun1.sh: line 3: fun: command not found

        如果函数只声明了,但是没有调用这个函数,那么该函数不会执行。但是我们可以使用 . 或者 source 来先执行这个脚本,让函数放到当前的 Shell 环境中,此时我们在 Shell 环境中就可以执行这个函数

示例:

[root@openEuler ~]# cat fun1.sh
#!/bin/bash

#只声明 fun 函数,但是没调用函数
fun() {
        echo "the function has $# parameters"
        echo "all parameters $@"
        echo "first parameter $1"
        echo "second parameter $2"
}

#将脚本中的函数放到当前shell 环境中
[root@openEuler ~]# source ./fun1.sh 

[root@openEuler ~]# fun 1 2
the function has 2 parameters
all parameters 1 2
first parameter 1
second parameter 2

函数的返回值

        在 Shell 中,函数也是可以有返回值的,但是它和其他语言中的函数返回值不太相同

在函数中如果使用 return 语句来退出函数,并返回函数的值时,那么在函数外就需要使用 echo $? 来获取返回的值
在函数中如果使用的是 echo 输出,那么在函数外边就可以使用 变量=$(函数名称) 来获取返回的值

注意:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值