目录
函数
源于数学术语,即定义好了计算公式。函数就是一个功能模块,在函数中写好执行的命令即可。使用函数可以避免代码重复,增加可读性,简化脚本;使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强。函数要先定义在调用。
查看函数列表
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次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。