变量:只能存一个值,数组可以存多个值

(1)普通数组,索引下标是整数:

1)定义:

方法一:一次赋一个值;语法:数组名[下标]=变量值

array[1]=linux

array[2]=shell

方法二:一次赋多个值;数组名=(变量值1 变量值2)

arrar1=(linux shell awk openstack [20]=docker)

2)引用:获取数组索引变量

语法:echo ${数组名[索引]}

echo ${books[3]}

(2)关联数组,索引下标是字符串:

1)定义关联数组:

语法:declare -A 数组名; 数组名=([索引]=变量值)

declare -A info1
info1=([name]=jack [sex]=male [age]=28 [height]=170 [skill]=cloud) #info1是数组名,[name]:是数组索引下标; jack是数组元素

(3)访问数组元素:

访问数组中的元素:echo ${数组名[索引]}; echo ${info1[name]}

访问数组中的所有元素:echo ${数组名[@]} 等同于echo ${数组名[*]}

统计数组的元素的个数:echo ${#数组名[@]}

获取数组的索引:echo ${!数组名[@]} #非常重要

(4)遍历数组:通过数组索引遍历元素;把要统计的对象作为数组的索引

  • 例1:遍历数组:while方式
#!/bin/bash
while read line
do
hosts[i++]=$line
done </etc/hosts
#遍历数组
for i in ${!hosts[@]}
do
echo "$i:${hosts[$i]}"
done
  • 例2:遍历数组,for循环
#!/bin/bash
old_IFS=$IFS
IFS=$'\n'
for line in $(cat /etc/hosts)
do
hosts[++i]=$line
done
for i in ${!hosts[@]}
do
echo "$i:${hosts[$i]}"
done
IFS=$old_IFS
  • 例3:统计性别
#!/bin/bash
declare -A sex
while read line
do
type=$(echo $line|awk '{print $2}')
let sex[$type]++
done <sex.txt
for i in ${!sex[*]}
do
echo "$i:${sex[$i]}"
done
# cat sex.txt
jack01 m
jack02 f
jack03 m
jack04 f
  • 例4:统计shell种类
#!/bin/bash
declare -A count
while read line
do
type=$(echo $line|awk -F ':' '{print $NF}')
let count[$type]++
done </etc/passwd
for i in ${!count[@]}
do
echo "$i: ${count[$i]}"
done
  • 例5:统计tcp连接状态数量
#!/bin/bash
while true
do
unset tcp_count
declare -A tcp_count
type=$(ss -an | grep :80 | awk '{print $2}')
for i in $type
do
let tcp_count[$i]++
done
for j in ${!tcp_count[@]}
do
echo "$j:${tcp_count[$j]}"
done
sleep 1
clear
done

(十一)数组array的更多相关文章

  1. (66)Wangdao.com第十一天_JavaScript 数组Array

    数组 Array 本质上,数组属于一种特殊的对象.typeof 运算符会返回数组的类型是 object 数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...) // Object.ke ...

  2. (C/C++学习笔记) 十一. 数组

    十一. 数组 ● 基本概念 数组:数组是一组在内存中依次连续存放的(数组所有元素在内存中的地址是连续的).具有同一类型的数据变量所组成的集合体.其中的每个变量称为数组元素,它们属于同一种数据类型,数组 ...

  3. 我理解的数据结构(一)—— 数组(Array)

    我理解的数据结构(一)-- 数组(Array) 首先,我是一个phper,但是毕竟php是一个脚本语言,如果使用脚本语言去理解数据结构具有一定的局限性.因为脚本语言是不需要编译的,如果你的语法写的不错 ...

  4. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别

    ArrayList和Vector的区别ArrayList与Vector主要从二方面来说.  一.同步性:   Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...

  5. go 数组(array)、切片(slice)、map、结构体(struct)

    一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...

  6. javascript类型系统——数组array

    × 目录 [1]创建 [2]本质 [3]稀疏[4]长度[5]遍历[6]类数组 前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与 ...

  7. swift基本用法-数组array

    数组简单用法 //------------------------------------------------------------------------------ // 1. 数组定义 / ...

  8. C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...

  9. Javascript基础系列之(四)数据类型 (数组 array)

    字符串,数值,布尔值都属于离散值(scalar),如果某个变量是离散的,那么任何时候它只有一个值. 如果想使用变量存储一组值,就需要使用数组(array). 数组是由多个名称相同的树值构成的集合,集合 ...

  10. AS3 - 数组Array的几个常用方法(附样例)

    AS3 - 数组Array的几个常用方法(附样例) 2015-03-30 10:39发布:hangge浏览:241   Flex/Flash开发中,经常会使用到数组,下面总结了一些数组的常用方法. 1 ...

随机推荐

  1. 简单配置 Tomcat 的 Server.xml(war包发布)

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" ...

  2. Bootstrap中的Affix插件

    我们为什么要用bootstrap?因为懒!哦....不,是因为方便,呃...意思差不多. 今天来说说Affix这个插件,它可以使导航栏固定,免去了自己手写的麻烦,用着非常方便,废话不多说,下面是用法. ...

  3. Spark+Python+Pycharm在Windows下的配置

    http://blog.csdn.net/ydq1206/article/details/51922148

  4. BZOJ4367 IOI2014holiday假期(整体二分+主席树)

    显然最优策略是先走到一边要到达的最远城市,再换方向走到另一边要到达的最远城市(当然也可以直接停止),路上参观景点. 先仅考虑求出只向左走,花费时间i时的最优解.如果能求出这个,类似的就可以求出所有情况 ...

  5. [bzoj4832][Lydsy1704月赛]抵制克苏恩

    题目大意:有一个英雄和若干个所从,克苏恩会攻击$K$次,每次回随机攻击对方的一个人,造成$1$的伤害.现在对方有一名克苏恩,你有一些随从.如果克苏恩攻击了你的一名随从,若这名随从不死且你的随从数量不到 ...

  6. BZOJ3236: [Ahoi2013]作业 树状数组维护 莫队

    水果~~~~ 关于四个while可行性的证明:区间有正确性所以不管那团小东西用没有duang~反它最终总会由于两次覆盖二准确 关于区间种数可行性的证明:他会在0 1间(或两边)来回跳动(过程中),最终 ...

  7. java一个接口可以继承另外一个接口吗

    一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类, ...

  8. Codeforces Round #535 (Div. 3) 题解

    Codeforces Round #535 (Div. 3) 题目总链接:https://codeforces.com/contest/1108 太懒了啊~好久之前的我现在才更新,赶紧补上吧,不能漏掉 ...

  9. HDU4280:Island Transport(最大流)

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  10. java,jenkins

    以前玩的是hudson ,现在玩的是jenkins.以前用的是Tomcat,现在不知道他们怎么不用... 1,装个Jenkins镜像. 2.配置项目: 先取个名字:exchange 配个svn: 构建 ...