目录
一、函数
1、最主要作用:
避免代码重复,增加可读性,简化脚本
2、基本格式:
格式1:(最通用)
函数名(){
命令序列
}
格式2:
function 函数名 {
命令序列
}
格式3:
function func_name () {
...函数体...
}
3、注意事项:
直接写 函数中调用函数 直接写函数名
同名函数 后一个生效
调用函数一定要先定义
每个函数是独立
4、使用方法:
1、先定义函数
2、再调用函数
3、准备一个专门存放函数的文件
5、函数变量的作用范围:
加 local 关键字 可以让 变量 只在函数中生效,不会影响外界环境
6、函数的返回值:
如果 使用函数 那么 $? 使用就会 受限
我们可以使用 return 自定义 $? 的返回值,来判断 函数中的 命令是否成功
7、函数的文件:
专门存放函数的文件
要使用的时候
. 绝对路径的文件名 放在脚本的最前面
8、函数的传递参数:
需要注意
脚本的$1 $2
函数的 $1 $2
是没有关系的
函数的 $1 $2 是指跟在函数后面的值
9、阶乘:
阶乘是一个正整数及其之前所有正整数的积
求5的阶乘结果 120
4的阶乘结果 *5
3的阶乘结果 *4
2的阶乘结果 *3
1的阶乘结果 *2
1的阶乘结果是 1
fact: 求阶乘的结果
#!/bin/bash
fact () {
if [ $1 -eq 1 ]
then
echo 1
else
echo $[$1*`fact $[$1-1]`]
fi
}fact $1
1、脚本创建与运行
2、脚本配置
二、数组
1、概类:
。普通数组 下标是数字
。关联数组 下标是有含义的字符串
。变量: 存储单个元素的内存空间 一一对应
。数组: 存储多个元素的连续的内存空间,相当于多个变量的数据集合 一对多
2、数组名和索引(下标)
。索引的编号从0开始,属于数值索引(下标)
。索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0 版本之后开始支持
。bash的数组支持稀疏格式 (索引不连续) a[0] a[3)
3、定义数组
1.数组名= ( 数组值中间用 空格隔开 )
2.数组名[下标1]=值1
数组名[下标2]=值2
.....................................
数组名[下标n]=值n
例子:
a= (10 20 30 40 50)
4、调用数组(重要) a 为数组名
a=(10 20 30 40 50 60) #自定义数组
4.1、单个调用:
echo ${a[0]} #调用第一个值
echo ${a[1]} #调用第二个值
........................
echo ${a[n]} #调用第n+1个值 (有疑惑)
4.2、全部调用:
echo ${a[@]}
echo ${a[*]}
4.3、显示数组的值的个数:
echo ${#a[@]}
4.4、显示数组所有下标:
echo ${!a[@]}
4.5、数组分隔:
echo ${a[@]:2:2} #跳过前两个,再往后取两个值
4.6、删余数组:
unset 数组名 #将整个数组删除
unset a[0] #只删除数组的第一个值
5、小实验:
5.1、遍历数组
#!/bin/bash
a=(谭 王 徐 罗 付 汪 韩 戚)for i in ${a[@]}
do
echo $i
done1、脚本创建与运行
2、脚本配置
5.2、随机点名小脚本
#!/bin/bash
a=(谭 王 徐 罗 付 汪 韩 戚)r=`echo $[RANDOM%8]`
echo ${a[$r]}1、脚本创建与运行
2、脚本配置
5.3、生成随机数组,取最大值与最小值:
#!/bin/bash
for i in {0..9}
do
a[$i]=$RANDOM
[ $i -eq 0 ] && min=${a[0]} && max=${a[0]}
[ ${a[$i]} -gt $max ] && max=${a[$i]}
[ ${a[$i]} -lt $min ] && min=${a[$i]}
doneecho "数组所有值为: ${a[@]}"
echo "最大值是: $max"
echo "最小值是: $min"1、脚本创建与运行
2、脚本配置