shell 编程之函数与数组

目录

函数

查看函数列表

函数的格式

函数的作用范围 

函数返回值

函数的文件

递归函数

阶乘

数组

定义与调用数组

数组名和索引

数组的分类

普通数组

关联数组

数组切片

遍历数组

 随机点名

随机取值

冒泡排序

基本思想:

算法思路


函数

        源于数学术语,即定义好了计算公式。函数就是一个功能模块,在函数中写好执行的命令即可。使用函数可以避免代码重复,增加可读性,简化脚本;使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强。函数要先定义在调用。

查看函数列表

declare -F (函数名)查看当前已定义的函数名,加函数名则查看该函数,不加则查看所有。
declare -f (函数名)查看当前已定义的函数定义,加函数名则查看该函数,不加则查看所有。
unset 函数名删除函数

函数的格式

   格式1.

函数名 () { 

命令序列

}

格式2.

function  函数名(){

命令序列

}

格式3.

function 函数名  {

命令序列

}

函数的作用范围 

        函数在shel脚本中仅在当前的shell环境中,有效shell脚本中函数的变量默认全局有效,将变量限定在函数内部使用local命令,不影响外界环境。

函数返回值

如果使用函数,那么 $? 使用就会受限,我们可以使用 return 自定义 S? 的返回值,来判断 函数中的命令是否成功。

函数的文件

        专门存放函数的文件(自建),使用时:.   绝对路径的文件名 放在脚本的最前面

递归函数

  • 函数调用自己本身的函数
  • 必须要有结束函数的语句,防止死循环。

阶乘

        阶乘是基斯顿·卡曼于 1808 年发明的运算符号,是数学术语。一个正整数的阶乘(factorial) 是所有小于及等于该数的正整数的积,并且0和1的阶乘为1,自然数n的阶乘写作n!

n!=1*2*3*...*n
阶乘亦可以递归方式定义:

0!=1,n!=(n-1)!*n
n!=n(n-1) (n-2)...1
n(n-1)! = n(n-1) (n-2) !

数组

        存储多个元素的连续的内存空间,相当于多个变量的,集合数据的集合。

定义与调用数组

 

数组名和索引

  • 索引的编号从0开始,属于数值索引
  • 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持0
  • bash的数组支持稀疏格式(索引不连续)

数组的分类

  • 普通数组,下标是数字。
  • 关联数组,下标是有含义的字符串。

普通数组可以不事先声明,直接使用
declare -a
关联数组必须先声明,再使用
declare -A 

关联数组

数组切片

遍历数组

 随机点名

随机取值

冒泡排序

        类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。

基本思想:

        冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。

算法思路

        冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值