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

(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. 【转】深入理解Java中的String

    原文链接:http://www.cnblogs.com/xiaoxi/p/6036701.html 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码 ...

  2. 配置apache反向代理进行跨域

    配置apache反向代理 打开配置文件httpd.conf 开启 proxy_http_module 和 proxy_module 模块,将#号删除 #LoadModule proxy_module ...

  3. 【bzoj2453】维护队列/【bzoj2120】数颜色 分块+二分

    题目描述 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会依据个人喜好, ...

  4. Codeforces Round #390 (Div. 2) E(bitset优化)

    题意就是一个给出2个字符矩阵,然后进行匹配,输出每个位置的匹配的结果 (超出的部分循环处理) 一种做法是使用fft,比较难写,所以没有写 这里使用一个暴力的做法,考虑到一共只出现26个字符 所以使用一 ...

  5. [CF1065C]Make It Equal

    题目大意:$n$列箱子,横向消除,一次可以把一行及以上的所有箱子消除,但是一次最多只可以消除$k$个,求最少用几次把箱子的高度变成一样 题解:贪心,求出比一个高度高的有几个箱子,消除即可 卡点:代码改 ...

  6. [洛谷P4782]【模板】2-SAT 问题

    题目大意:有$n$个布尔变量 $x_1 \sim x_n$,另有$m$个需要满足的条件,每个条件的形式都是"$x_i$ 为$true/false$或$x_j$为$true/false$&qu ...

  7. vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图,折线图)

    一.echarts3.0(官网: http://echarts.baidu.com/) 首先通过npm安装echarts依赖,安装的为3.0版本 npm install echarts -s 也可以使 ...

  8. Spring源码解析-事件

    Spring事件的组件 主要是3个组件: 1.ApplicationEvent   事件 2.ApplicationListener 监听器,对事件进行监听 3.ApplicationEventMul ...

  9. Codeforces Round #520 (Div. 2) B. Math

    B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math te ...

  10. 转:深入理解javascript原型和闭包系列

    转自:深入理解javascript原型和闭包系列 从下面目录中可以看到,本系列有16篇文章,外加两篇后补的,一共18篇文章.写了半个月,从9月17号开始写的.每篇文章更新时,读者的反馈还是可以的,虽然 ...