Shell脚本教程——数组的定义与使用
一、Shell数组介绍
Shell 数组是一种对数据进行统计和处理的有效方式,通过把需要统计的多个数值集中存放到一个数组中,然后通过每个元素的索引下标就可以灵活处理数据(所以可以简单理解为数组是一个可以存储多个值的变量)
二、Shell数组的定义和使用
Shell中的数组分为了普通数组和关联数字,普通数组的下标索引只能是数字,关联数组可以自定义字符串为索引下标。在Shell中使用小括号进行数组的定义
1、普通数组
· 一次赋予多个元素给数组
IP=("192.168.100.10" "192.168.100.20" shell python) #定义一个包含4个值的数组,用空格分隔每个元素值 echo $IP #默认显示数组中第一个元素值 echo ${IP[1]} #数组中第一个元素值的索引为0,这里1代表显示第二个元素192.168.100.20,以此类推 echo ${IP[@]} #显示数组中的每个元素值 echo ${!IP[@]} #显示数组中的出每个索引下标 echo ${IP[*]} #也是显示数组中的所有元素 echo ${#IP} #显示第一个元素的字符长度 echo ${#IP[3]} #指定索引下标后可以显示指定元素的字符长度 echo ${#IP[@]} #显示数组元素值的个数
· 一次赋予1个值给数组,赋值的时候可以使用索引下标指定元素的位置
array1[0]=python array1[1]=php array1[2]=shell
2、关联数组
关联数组的索引可以自定义为字符串,不再必须是整数,但是必须提前声明关联数组,否则Shell会把这个变量作为普通数组处理
dclare -A info #声明是关联数组,否则shell只认识普通数组 info=([name]=tom [age]=18 [sex]=male) #和普通数组定义方式有区别 echo ${info[name]}
3、使用命令输出结果动态定义数组
array=`ls /data/backup/mysql_backup_from_dev/` echo ${array[*]}
三、数组使用示例
1、用数组统计不同shell的数量
declare -A shells while read line do type=`echo $line |awk -F: '{print $NF}'` let shells[$type]++ done </etc/passwd for i in ${!shells[@]} #遍历索引 do echo "$i: ${shells[$i]}" done
2、统计TCP状态,比如看看有多少用户在请求我们的80端口
declare -A status type=`ss -an |grep :80 | awk '{print $2}'` for i in $type do let status[$i]++ done for j in ${!status[@]} do echo "$j: ${status[$j]}" done
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论