Shell脚本中数组的介绍定义以及赋值方法学习
有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GENDER,班级有50个人,思考如何解决交互中数据存储的问题。很多人可能直接说或定义变量接收数据不就行了!nice,你很棒!!
解决方案如下:
1)每个学生通过5个变量,一个班级50个学生,5*50=250,妥妥的!我定义250个变量接收就可以了,美美哒!
兄弟,现在不是全班了是全校的学生需要录入你这个信息系统,你写变量吧!!当我提出这个需求的时候,作为开发你会不会想骂娘呢?
2)使用数组来定义,我只需要定义5个数组来接收所有用户的数据就可以了,5个数组就能解决一切,你觉得你会不会想了解下数组是什么呢?
数组可以让用户一次赋予多个值,需要读取数据时只需通过索引调用就可以方便读出了。
普通数组:只能使用整数作为数组索引(元素的索引)
关联数组:可以使用字符串作为数组索引(元素的索引)
1 | 数组名称=(元素1 元素2 元素3 ...) |
一次附一个值
1 | #变量名=变量值 |
一次附多个值
1 | array=(var1 var2 var3 var4) |
取值方式: ${数组名称[索引]}
索引: 默认情况下索引是指数组中的元素[存的值]在数组中的顺序,从0开始计数,关联数组除外。比如:
array=(var1 var2 var3 var4)
array数组中存有4个元素,分别是:var1 var2 var3 var4
那么我想取出var2这个元素,那么就得先看看他在数组中的位置,数组中的元素索引如下:
1 | 元素 var1 var2 var3 var4 |
所以正确表示array数组中元素var2的方式是:${array[1]}
数组取值练习
1 | ${array[i]} i表示元素的索引 |
定义管理数组
关联数组使用首先需要申明该数组为关联数组,申明方式: declare -A 数组名称
1 | 首先声明关联数组 |
关联数组赋值
一次赋一个值
1 | #数组名[索引]=变量值 |
一次附多个值
1 | asso_array2=([name1]=harry [name2]=jack [name3]=amy [name4]="Miss zhang") |
查看关联数组
1 | [root@zutuanxue ~]# declare -A |
1 | echo ${asso_array1[linux]} |
写一个监控CPU平均负载值的脚本
案例需求
分别打印CPU 1min 5min 15min load负载值
案例思路
1、如何取CPU负载值,有哪些命令
2、如果存储在内存中,变量、数组
案例步骤
1、收集cpu load 平均负载值到数组
2、打印输出对应的负载值
代码实现
1 |
|
代码效果
1 | sh cpu_load.sh |