网站建设有什么用,黄页88怎么设置关键词,番禺人才网官方网站信息公布,大连爱得科技网站建设公司怎么样目录 一、函数
1.函数的由来
2.函数的作用
3.函数的使用方法
4.函数的定义
5.查看函数
6.删除函数
7.函数返回值
8.函数的传参数
9.函数递归
二、数组
1.数组的相关介绍
2.声明数组
3.定义数组的格式
4.冒泡排序
总结#xff1a;本章主要介绍了函数和数组相关知…目录 一、函数
1.函数的由来
2.函数的作用
3.函数的使用方法
4.函数的定义
5.查看函数
6.删除函数
7.函数返回值
8.函数的传参数
9.函数递归
二、数组
1.数组的相关介绍
2.声明数组
3.定义数组的格式
4.冒泡排序
总结本章主要介绍了函数和数组相关知识 一、函数
1.函数的由来
在编写脚本时有些脚本可以反复使用可以调用函数来解决脚本定义成函数类似于别名
2.函数的作用
函数的作用避免脚本重复性增加可读性方便使用
3.函数的使用方法
先定义函数再引用函数
1.直接写 函数中调用函数 直接写函数名
2.同名函数 后一个生效
3.调用函数一定要先定义
4.每个函数是独立
4.函数的定义
基本格式
1. function 函数名 { 命令序列 } 2. 函数名 { 命令序列 } 3. function 函数名 { 命令序列 } 例子 5.查看函数 declare -F 查看函数列表 declare -f 查看函数的具体定义 6.删除函数 unset 函数名 7.函数返回值
return自定义返回值范围0-255超出时除以256取余
return表示退出函数并返回一个退出值脚本中可以用$?变量表示该值
使用原则 函数一结束就去返回值应为$?变量只返回执行的最后一条命令的退出返回码 退出码必须是0-255超出的值将为除以256取余
[rootlocalhost opt]# vim f.sh
[rootlocalhost opt]# bash f.sh
输入数字8
16#!/bin/bash
fc1 (){
read -p 输入数字 s
return $[$s*2]
}
fc1
echo $? 8.函数的传参数
函数的$1和$2是指跟在函数后面的值
脚本中的$1$2和函数的$1$2是没有关系的 [rootlocalhost data]# vim r.sh [rootlocalhost data]# bash r.sh 2 3 2 3 #!/bin/bash
sum1 (){
echo $1
echo $2
}
sum1 $1 $2函数变量的作用范围
local命令只在内部有效对外部无效局部变量只对函数有效
name命令普通变量
export命令让子shell继承变量
如果加local关键字可以让变量只在函数中生效不会影响外界函数的返回值
9.函数递归
函数调用自己本身的函数阶乘
例
55*4*3*2*1120
44*3*2*124
#/bin/bash
fact () {if [ $1 -eq 1 ]thenecho 1elser$[$1*fact $[$1-1]]echo $rfi
}
fact $1vim jc.sh [rootlocalhost data]# bash jc.sh 3 6 [rootlocalhost data]# bash jc.sh 4 24 二、数组
1.数组的相关介绍
数组分为普通数组和关联数组
普通数组下标为数字
关联数组下标为有含义的字符串
变量存储单个元素的内存空间
数组存储多个元素的连续的内存空间相当于多个变量的集合
数组名和索引
索引的编号从0开始属于数值索引
索引可支持使用自定义的格式而不仅是数值格式即为关联索引
bash的数组支持稀疏格式索引不连续
2.声明数组
使用数组需要先声明数组
普通数组 declare -a [数组名]
普通数组不需要手动声明系统自动帮你声明
关联数组 declare -A [数组名]
关联数组一定要声明
3.定义数组的格式
定义数组格式
1.数组名value0 value1 value2 value3 ......
2.数组名[0]value [1]value1 [2]value2 ....
3.列表名value0 value1 value2 value3 ......
4.数组名$列表名)
数组名[0]value1
数组名[1]value2
数组名[2]value3
数组的包括数据类型
数值型
字符型
混合型数值加字符
使用 或 定义单引号或双引号括起来 [rootlocalhost ~]# a(10 20 30 40 50) [rootlocalhost ~]# declare -a declare -a BASH_ARGC() declare -a BASH_ARGV() declare -a BASH_LINENO() declare -a BASH_SOURCE() declare -ar BASH_VERSINFO([0]4 [1]2 [2]46 [3]2 [4]release [5]x86_64-redhat-linux-gnu) declare -a DIRSTACK() declare -a FUNCNAME() declare -a GROUPS() declare -a PIPESTATUS([0]0) declare -a a([0]10 [1]20 [2]30 [3]40 [4]50) [rootlocalhost ~]# echo ${!a[*]} 0 1 2 3 4 [rootlocalhost ~]# echo ${a[0]} 10 [rootlocalhost ~]# echo ${a[]} 10 20 30 40 50 [rootlocalhost ~]# echo ${#a[]} 5 [rootlocalhost ~]# echo ${!a[]} 0 1 2 3 4 [rootlocalhost ~]# a(10 20 30 40 50) 定义数组
declare -a 查看数组 echo ${!a[*]} 查看下标
echo ${a[0]} 查看数组中个体
echo ${!a[*]} 查看所有下标
echo ${a[]} 查看数组中的所有个体
echo ${#a[]} 查看数组的长度个数
echo ${!a[]} 查看所有下标
*和同义
数组分隔
echo ${a[]:0:5} [rootlocalhost ~]# echo ${a[]:0:5} 10 20 30 40 50 [rootlocalhost ~]# echo ${a[]:2:5} 30 40 50 [rootlocalhost ~]# echo ${a[]:2:2} 30 40 [rootlocalhost ~]# echo ${a[]:2:3} 30 40 50 [rootlocalhost ~]# echo ${a[]} 10 20 30 40 50 [rootlocalhost ~]# echo ${a[]:0:5} 代表跳过前0个提取后5个
echo ${a[]:2:2} 代表跳过前2个提取后2个
echo ${a[]} 代表数组所有个体 [rootlocalhost ~]# echo ${a[]} 10 20 30 40 50 [rootlocalhost ~]# echo ${a[1]} 20 [rootlocalhost ~]# a[1]9 [rootlocalhost ~]# echo ${a[1]} 9 [rootlocalhost ~]# echo ${a[]} 10 9 30 40 50 [rootlocalhost ~]# a[1]9 数组替换把原来的20换成了9
4.冒泡排序
冒泡 是通过数字比较 将大的数往后排 小的数往前面排 5个数字 5-14 需要比较4轮 才能知道每一个数字的具体位置 a10 50 89 46 38 轮次 总个数 需要比较的数 比几次 找到的数 第1轮 5 5个数 比4次 找到最大数 第2轮 5 4个数 比3次 找到第二大数 第3轮 5 3个数 比2次 找到第三大的数 第4轮 5 2个数 比1次 找到第四大的数
#!/bin/bash
a(10 50 89 46 38)
for ((i1;i5;i))
dofor ((j0;j5-$i;j))dof${a[$j]}m$[$j1]s${a[$m]}if [ $f -gt $s ]thenq$fa[$j]$sa[$m]$qfidone
done
echo 排序后的数组为${a[]}[rootlocalhost data]# vim mpd.sh [rootlocalhost data]# bash mpd.sh 排序后的数组为10 38 46 50 89 [rootlocalhost data]# 总结本章主要介绍了函数和数组相关知识