Shell脚本学习(五)
1.shell中的数组
1.1数组
数组用来存放相同类型的多个值
数组有下标(有些人称之为索引)下标是从0开始的
1.2数组定义的方法
方法一(个人建议用这一种):
数组名=(value0 value1 value2 value3 .....)
方法二:
数组名=([0]=value [1]=value ......)
方法三:
列表名="value0 value1 value2 ......."
数组名=($列表名)
方法四:
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
数组名[3]="value"
...........
1.3数组包括的类型
数值类型、字符类型(使用“或”定义)
2.数组的经典的小案例
2.1需求:
1.期末考试了,老师需要从电脑输入成绩
2.假设只有5名学生参与考试
3.老师需要选出这次考试的最高分,并打印出来
2.2需求分析
1.老师需要从电脑输入成绩,就需要实现人机交互,并将数字存入数组
2.只有五名同学,就说明要输入5次,这个就需要使用循环
3.老师需要知道最高分是多少,这个就需要对数组里面的数进行一一比较,得出最高的分数,一一比较就需要再一次使用循环
2.3实现需求
vim testshuzudemo.sh
#!/bin/bash
for ((j=1;j<=5;j++)) //实现循环输入5个学生的成绩
do
read -p "请输入第$j个数" num //人机交互实现将学生的成绩录入数组
a=$j-1
array[$a]="$num"
done
echo "${array[*]}" //将学生的成绩都打印出来
len=${#array[*]}
a=0
b=0
for i in `seq $len` //将学生的成绩进行一一比较,得出最高分
do
a=${array[ $i - 1 ]}
if [ $a -ge $b ]
then
let b=$a
fi
done
echo "最大值为$b"
chmod +x testshuzudemo.sh
2.4测试
./testshuzudemo.sh
请输入第1个数98
请输入第2个数67
请输入第3个数87
请输入第4个数76
请输入第5个数54
98 67 87 76 54
最大值为98
3.总结
数组和循环是离不开的,比如刚刚我们的小案例。通过循环讲数据写入到数组里面,在通过循环将数组里面的最大值筛选出来,我们可以发现,对数组的操作离不开循环。除了手动通过数组的语法一个一个写。shell脚本的强大之处就在于可以简化人工输入的步骤,快速实现功能。
下面展示一下Shell脚本的功能
1.自动化系统初始化(update,软件安装,时区设置,安全策略)
2.自动化批量脚本部署程序(LAMP,LNMP,Tomcat,LVS,Nginx)
3.管理应用程序 (KVM,集群管理扩容,MySQL,批量Raid)
4.日志分析处理程序(PV,UV,200,!200,top100,grep/awk)
5.自动化备份恢复程序(mysql完全备份、增量备份+crond)
6.自动化管理程序(批量远程修改密码,软件升级,配置更新)
7.自动化信息采集监控程序(手机系统/应用状态信息,CPU,Men,Disk,Net,Apache,MySQL,TCP Status)
8.配合zabbix信息采集(手机系统/应用状态信息,CPU,Men,Disk,Net,Apache,MySQL,TCP Status)
9.自动化扩容(增加云主机---->部署应用)
zabbix监控CPU 80%+ Python API AWS/EC2(增加、删除云主机) + Shell Script(业务上线)
10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序算法实现
11.Shell可以做任何事(取决于需求)