本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Shell
  • 【Linux Shell脚本编程】数组的定义与使用

【Linux Shell脚本编程】数组的定义与使用

发布:TangLu2018-2-7 14:31分类: Shell 标签: bash shell 数组

在Shell中一个变量只能有一个值,但是通过定义数组变量可以赋予多个值,数组定义方式和变量基本一样。数组在工作中多用于做统计,思路就是把需要统计的字段放到索引中。Shell中的数组分为了普通数组和关联数字,普通数组的下标索引只能是数字,而关联数字可以自定义字符串。

一、数组的定义

1、普通数组

一次赋予多个值(元素)给数组的方式

array1.png

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[@]}  #显示数组元素值的个数


还可以一次赋一个值给数组,方括号内就是索引下标

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]}
二、数组使用示例


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



温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【Linux Shell脚本编程】数组的定义与使用
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-306.html  [生成短网址]

已有 0/2501 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~