Shell中的数组及其基本操作
Shell里的数组只是一维(不能嵌套)的数组
1)格式
使用小圆括号,中间以空格作为分隔符
[root@node1 3yue30]# singer=(zhangheng zouzemin cali wangshuyi liuxiang wangchen jinzhiyang liyu)
2)下标基本操作
元素的下标从0开始
单个引用直接使用下标
[root@node1 3yue30]# echo ${singer[4]} # 输出signer数组里的第5个元素
liuxiang
查看所有数组元素的内容
[root@node1 3yue30]# echo ${singer[@]}
zhangheng zouzemin cali wangshuyi liuxiang wangchen jinzhiyang liyu
[root@node1 3yue30]# echo ${singer[*]}
zhangheng zouzemin cali wangshuyi liuxiang wangchen jinzhiyang liyu
统计所有元素数量
[root@node1 3yue30]# echo ${#singer[*]}
8
[root@node1 3yue30]# echo ${#singer[@]}
8
查看数组元素的下标
[root@node1 3yue30]# echo ${!singer[@]}
0 1 2 3 4 5 6 7
删除数组里的元素
[root@node1 3yue30]# unset singer[5]
[root@node1 3yue30]# unset singer[1]
[root@node1 3yue30]# echo ${!singer[*]}
0 2 3 4 6 7
3)应用
将一行里以空白分隔开的数据,直接赋值给一个数组,然后通过下标去取相应的数据
方法:
[root@ansible ~]# df -Th|grep "/$"
/dev/mapper/centos-root xfs 17G 2.8G 15G 16% /
[root@ansible ~]# p_root=($(df -Th|grep "/$"))
[root@ansible ~]# echo ${p_root[*]}
/dev/mapper/centos-root xfs 17G 2.8G 15G 16% /
[root@ansible ~]# echo ${p_root[5]}
16%
取出w命令执行结果里的包含pts/0的行里的ip地址,建议使用数组
[root@ansible ~]# w
09:39:49 up 5 days, 8:29, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 213月20 7days 0.27s 0.27s -bash
root pts/0 192.168.111.1 08:56 5.00s 0.13s 0.02s w
root tty4 243月20 6days 0.01s 0.01s -bash
root tty3 243月20 42:49m 0.85s 0.85s -bash
[root@ansible ~]# cc=($(w | grep "pts/0"))
[root@ansible ~]# echo ${cc[2]}
192.168.111.1