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

(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

最新文章

  1. C#基础:LINQ 查询函数整理
  2. Sublime、Webstorm等在APICloud平台上全面支持WiFi真机同步和实时预览功能
  3. FHS定义的Linux目录树
  4. BFC以及文档流
  5. Windows 7 封装与定制不完全教程
  6. [php] PHPStorm8 for Yincart project
  7. C++之智能指针
  8. 使用 FFT 进行频谱分析
  9. Linux -- nginx
  10. GlusterFS
  11. js判断一个图片是否已经存在于缓存
  12. 可以直接用的“ html转字符串string”方法
  13. 来自工程师的8项Web性能提升建议
  14. Day14作业及默写
  15. oracle ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)
  16. Delphi XE5 for Android (六)
  17. 调试日志——基于stm32的智能声光报警器(一)
  18. java的collection集合
  19. SockIOPool
  20. 【leetcode刷题笔记】Find Peak Element

热门文章

  1. [Leetcode] Anagrams 颠倒字母构成词
  2. webstorm vue cli 热更新不起作用解决办法
  3. PAT团体程序设计大赛---(模拟)
  4. springboot与dubbo结合
  5. grub ubuntu启动
  6. hbase集群写不进去数据的问题追踪过程
  7. 关于JAVA正则匹配空白字符的问题(全角空格与半角空格)
  8. ubuntu12.04 Qt WebKit编译
  9. React 入门小结
  10. WebView使用--文章集锦