shell的数组
2021-02-16 12:21
标签:tcp access 次数 txt declare 分类 调用 bsp ++ 数组的分类 案例: 遍历索引 案例: shell的数组 标签:tcp access 次数 txt declare 分类 调用 bsp ++ 原文地址:https://www.cnblogs.com/youhongliang/p/12706665.html数组
普通数组: 只能使用整数作为数组索引
关联数组: 可以使用字符作为数组索引
元素=索引=下标
普通数组定义
[root@shell ~]# array[0]=shell
[root@shell ~]# array[10]=MySQL
[root@shell ~]# echo ${array[0]}
shell
[root@shell ~]#
[root@shell ~]# echo ${array[10]}
MySQL
-----------------
[root@shell ~]# array=(shell MySQL Redis)
[root@shell ~]# echo ${array[0]}
shell
[root@shell ~]# echo ${array[1]}
MySQL
[root@shell ~]# echo ${array[2]}
Redis
----------------
[root@shell ~]# array=(Shell [5]=Docker Redis [10]=MySQL)
[root@shell ~]# echo ${array[0]}
Shell
[root@shell ~]# echo ${array[5]}
Docker
[root@shell ~]# echo ${array[6]}
Redis
[root@shell ~]# echo ${array[10]}
MySQL
---------------命令定义数组
[root@shell ~]# array=(`ls`)
[root@shell ~]# echo ${array[0]}
1.sh
[root@shell ~]# echo ${array[1]}
1.txt
[root@shell ~]# echo ${array[2]}
2.sh
[root@shell ~]# echo ${array[3]}
all.sh
常用的定义方式
array=(10.0.0.8 10.0.0.9 10.0.0.32)
取消定义数组
unset array
如何查看数组
[root@shell ~]# echo ${array[0]} # 使用索引查看
[root@shell ~]# echo ${array[*]} # 查看数组中所有的值
shell MySQL Redis
[root@shell ~]# echo ${array[@]} # 查看数组中所有的值
shell MySQL Redis
[root@shell ~]# echo ${!array[*]} # 查看索引
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/bin/sh
#定义数组
ip=(
10.0.0.1
10.0.0.2
10.0.0.7
10.0.0.8
10.0.0.9
)
#调用数组
for i in ${ip[*]}
do
ping -c1 -W1 $i &>/dev/null
[ $? -eq 0 ] && echo "ping $i 没问题....." || echo "ping $i 不通....."
done
#!/bin/sh
#定义数组
ip=(
10.0.0.1 0
10.0.0.2 1
10.0.0.7 2
10.0.0.8 3
10.0.0.9 4
)
#调用数组
for i in ${!ip[*]}
do
ping -c1 -W1 ${ip[$i]} &>/dev/null
[ $? -eq 0 ] && echo "ping ${ip[$i]} 没问题....." || echo "ping ${ip[$i]} 不通....."
done
关联数组 索引可以是字符串
[root@shell day5]# declare -A array
[root@shell day5]# array[index1]=shell
[root@shell day5]# array[index2]=mysql
[root@shell day5]# array[index3]=redis
[root@shell day5]#
[root@shell day5]# echo ${array[index1]}
shell
[root@shell day5]# echo ${array[index2]}
mysql
[root@shell day5]# echo ${array[index3]}
redis
[root@shell day5]# echo ${array[*]}
shell mysql redis
[root@shell day5]# echo ${array[@]}
shell mysql redis
[root@shell day5]# echo ${!array[@]}
index1 index2 index3
[root@shell day5]# array=([index1]=shell [test]=Redis [index2]=Redis)
[root@shell day5]# echo ${array[*]}
shell Redis Redis
查看所有的当前shell定义的数组
declare -A
cat sex.txt
zs m
ls m
zp f
lw f
qq m
ww x#!/bin/sh
#定义数组
declare -A array
while read sex
do
let array[$sex]++
donesex.txt
for i in ${!array[*]}
do
echo "性别$i 出现了 ${array[$i]} 次"
done
----------------
[root@shell day5]# sh array.sh
性别f 出现了 2 次
性别m 出现了 3 次
性别x 出现了 1 次
[root@shell day5]# declare -A array
[root@shell day5]#
[root@shell day5]# array[m]=1
[root@shell day5]# echo ${array[m]}
1
[root@shell day5]# let array[a]++
[root@shell day5]# let array[a]++
[root@shell day5]# echo ${array[a]}
2
[root@shell day5]# let array[b]++
[root@shell day5]# let array[b]++
[root@shell day5]# let array[b]++
[root@shell day5]# echo ${array[b]}
3
[root@shell day5]# for i in ${!array[*]};do echo $i;done
a
b
m
统计/etc/passwd 解释器出现的次数
#!/bin/sh
declare -A bash
while read line
do
let bash[`echo $line|awk -F: ‘{print $NF}‘`]++
done/passwd
for i in ${!bash[*]}
do
echo "$i 出现了 ${bash[$i]}次"
done
统计nginx日志ip出现的次数
#!/bin/sh
declare -A IP
while read line
do
let IP[`echo $line|awk ‘{print $1}‘`]++
done/log/nginx/access.log
for i in ${!IP[*]}
do
echo "$i 出现了 ${IP[$i]}次"
done