💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
![](https://img-blog.csdnimg.cn/direct/404535f738354a648da769bead480184.gif)
推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
shell脚本快速入门之-----数组
什么是数组?数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用
二、数组的分类
普通数组:不需要声明直接定义,下标索引只能是整数 关联数组:需要用declare -A声明否则系统不识别,索引可以是字符串
三、数组的格式
1、格式解读
如:arr=(11 22 33 44) 数组名称:arr 数组元素:11,12,12,14,数组元素默认是以空格分隔的 数组长度:4,有4个元素 数组下标:每个数组元素都有一个下标索引,一般从0开始,33是数组第三个元素,但是它的下标索引是2
2、定义一个数组
第一种:直接把要加入数组的元素用小括号括起来,中间用空格分开 num=(11 22 33 44)
第二种:精确的给每一个下标索引定义一个值加入数组,索引数字可以不连续 num=([0]=55 [1]=66 [2]=77 [4]=88)
第三种:先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组 list=“11 12 13 14” num=($list)
第四种:可以把命令的结果用小括号括起来添加到数组,那么数组会以空格或者制表符区分每一个元素 num=(cat /etc/passwd
)
四、数组的操作
1、读取数组和元素
代码语言:javascript
[root@server myscripts]# arr=(10 20 30 40 50) //定义了一个arr数组
[root@server myscripts]# echo ${arr[3]} //查看数组中索引是3的元素
40
[root@server myscripts]# echo ${arr[*]} //查看数组中所有的元素
10 20 30 40 50
[root@server myscripts]# echo ${arr[@]} //查看数组中所有的元素,同${arr[*]}
10 20 30 40 50
2、查看当前所有数组
代码语言:javascript
[root@server myscripts]# declare -a
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a arr='([0]="10" [1]="20" [2]="30" [3]="40" [4]="50")'
declare -a num='([0]="55" [1]="66" [2]="77" [4]="88")'
3、查看数组索引
代码语言:javascript
[root@server myscripts]# echo ${!num[*]}
0 1 2 4
1
2
4、查看数组元素个数
代码语言:javascript
[root@server myscripts]# echo ${#num[*]}
4
1
2
5、替换数组元素
代码语言:javascript
[root@server myscripts]# echo ${num[*]/77/55} //只是临时替换
55 66 55 88
[root@server myscripts]# echo ${num[*]}
55 66 77 88
6、删除数组
代码语言:javascript
(1)删除数组元素
[root@server myscripts]# unset num[2] //unset后面跟数组元素的下标
[root@server myscripts]#
[root@server myscripts]# echo ${num[*]}
55 66 88
[root@server myscripts]# echo ${#num[*]}
3
[root@server myscripts]# echo ${!num[*]}
0 1 3
(2)删除整个数组
[root@server myscripts]# unset num //后面直接跟数组名即可
[root@server myscripts]# declare -a
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a arr='([0]="10" [1]="20" [2]="30" [3]="40" [4]="50")'
五、数组脚本实例
1、把1-100的数字加入数组(2种方式)
代码语言:javascript
#!/bin/bash
list=`seq 1 100`
num=($list)
echo ${num[*]}
[root@server myscripts]# vim arr3.sh
#!/bin/bash
for ((i=0;i<=99;i++));do
arr[$i]=$[$i+1]
done
echo ${arr[*]}
[root@server myscripts]# . arr3.sh
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
2、输出1-100以内的奇数
代码语言:javascript
#!/bin/bash
j=0
for ((i=1;i<100;i++))
do
if [ $[$i%2] -ne 0 ] #if [ `expr $i % 2` -ne 0 ]这样也可以
then num[$j]=$i
fi
let j++
done
echo ${num[*]}
3、输出数组中最大的值
代码语言:javascript
[root@server ~]# vim paixu2.sh
#!/bin/bash
arr=(90 20 40 50)
max=${arr[$0]}
for((i=0;i<${#arr[*]};i++))
do
if [ $max -lt ${arr[$i]} ]
then
max=${arr[$i]}
fi
done
echo $max
[root@server ~]# . paixu2.sh
90
4、根据客户需求加入元素到数组
代码语言:javascript
#!/bin/bash
arr(){
read -p "请存入元素:" n
echo $n >> /opt/text1.txt
list=`cat /opt/text1.txt`
num($list)
echo "数组中的元素:${num[*]}"
}
while :
do
read -p "您想要加入元素吗?[Y/N]: " add
if [ "$add" == "Y" ]
then
arr
elif [ "$add" == "N" ]
then
echo "再见!"
break
fi
done
5、把数组中不满足60分的加到60分
代码语言:javascript
#!/bin/bash
num=(90 90 90 50 90 40 50 30)
for ((i=1;i<=${#num[*]};i++))
do
if [ $[num[$i-1]] -lt 60 ]
then
num[$i-1]=60
fi
done
echo ${num[*]}
6、删除数组中不足60分的元素
[root@server ~]# vim unset.sh
#!/bin/bash
arr=(70 60 80 40 30 20)
i=0
for v in ${arr[*]};do
if [ $v -lt 60 ];then
unset arr[$i]
fi
let i++
done
echo ${arr[*]}
[root@server ~]# . unset.sh