数组_遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#普通数组:只能使用整数作为数组索引
#普通数组
    一次赋一个值
    array1[0]=pear
    array1[1]=apple
    一次赋多个值
    array2=(tom jack alice)
    array3=(`cat /etc/passwd`)  #会将文件中的每一行做为一个值赋值给数组,但是如果有空格,会按空格分割,有空格需重新定义分隔符
    array4=(tom jack alice "bash shell")
    colors=($red $blue $green $recolor)
    array5=(1 2 3 4 5 6 "linux shell" [20]=saltstack) #可以指定下标赋值
#关联数组:可以使用字符串作为数组索引
#关联数组
    info=([name]=tianyu [sex]=male [age]=36 [height]=170) 
     
echo ${info[age]}  
echo ${array1[0]} #访问数组中第一个元素
echo ${array1[@]} #访问数组中所有元素 等同于echo ${array1[*]}
echo ${#array1[@]} #统计数组元素的个数
echo ${!array1[@]} #获取数组元素的索引
echo ${array1[@]:1} #从数组下标1开始
echo ${array1[@]:1:2} #从数组下标1开始,访问两个元素
declare -a  #查看数组

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#while循环遍历数组元素
 
#!/usr/bin/bash
while read line
do
        hosts[++i]=$line
done </etc/hosts
 
echo "hosts first: ${hosts[1]}"
echo
 
for i in ${!hosts[@]}
do
        echo "$i: ${hosts[i]}"
done

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#for循环读取数据到数组 需重新定义文件分割符
 
 
#!/usr/bin/bash
OLD_IFS=$IFS
IFS=$'\n'
 
for line in `cat /etc/hosts`
do
        hosts[++j]=$line
done
 
for i in ${!hosts[@]}
do
        echo "$i: ${hosts[i]}"
done
 
IFS=$OLD_IFS

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#用数组统计每个分组的数量
 
#!/usr/bin/bash
declare -A sex
echo "jm m" > sex.txt
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
 
 
#遍历数组统计不同shell类型数量
#!/usr/bin/bash
#awk -F":"  '{print $NF}' /etc/passwd |sort |uniq -c  #等价于这条命令
 
 
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

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#统计tcp连接状态数量
 
#!/usr/bin/bash
declare -A status
while :
do
    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
    sleep 1
    clear
done

  

posted @   smatterer  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示