数组
shell数组的定义
1.数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)
2.数组元素的下标由 0 开始。
3.Shell 数组用括号来表示,元素用"空格"符号分割开
4.在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}
数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用
数组的分类:
普通数组:不需要声明直接定义,下标索引只能是整数
关联数组:需要用declare -A 声明 否则系统不识别,索引可以是字符串
数组的定义方式
第一种:直接把要加入数组的元素用小括号括起来,中间用空格分开
num= ( 11 22 33 44 )
${ #num} 显示字符串长度
数组名=(value0 value1 value2)
第二种:精确的给每一个下标索引定义一个值加入数组,索引数字可以不连续
num= ( [ 0 ]=55 [ 1 ]=66 [ 2 ]=77 [ 4 ]=88)
数组名=( [ 0 ]=value [ 1 ]=value [ 2 ]=value. . . )
第三种:先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组。
list=“11 12 13 14”
num=(
l
i
s
t
)
列表名
=
"
v
a
l
u
e
0
v
a
l
u
e
1
v
a
l
u
e
2...
"
数组名
=
(
list) 列表名="value0 value1 value2..." 数组名=(
list)列表名="value0value1value2..."数组名=(列表名)
第四种:根据下标定义
数组名[0]=“11”
数组名[1]=“22”
数组名[2]=“33”
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
数组常见用法
1.获取数组的长度
[root@localhost ~]# ar_number=(10 20 30 40 50)
[root@localhost ~]# ar_length=${#ar_number[*]}
[root@localhost ~]# echo $ar_length
[root@localhost ~]# ar_number=(10 20 30 40 50)
[root@localhost ~]# ar_length=${#ar_number[@]}
[root@localhost ~]# echo $ar_length
2.数组元素遍历
[root@localhost ~]# vim kkkk.sh
#!/bin/bash
arr=(1 2 3 4 5 6)
for i in ${arr[*]} ###或 for i in ${arr[@]}
do
echo $i
done
[root@localhost ~]# sh kkkk.sh
3.元素切片
[root@localhost ~]# arr=(1 2 3 4 5 6)
[root@localhost ~]# echo ${arr[]}
1 2 3 4 5 6
[root@localhost ~]# echo ${arr[]:2:3}
3 4 5
[root@localhost ~]# echo ${arr[]:2:4}
3 4 5 6
[root@localhost ~]# echo ${arr[]:0:5}
1 2 3 4 5
4.数组元素替换
临时替换
[root@localhost ~]# arr=(1 2 3 4 56 7 8)
[root@localhost ~]# echo ${arr[]}
1 2 3 4 56 7 8
[root@localhost ~]# echo ${arr[]/56/5 6}
1 2 3 4 5 6 7 8
[root@localhost ~]# echo ${arr[*]}
1 2 3 4 56 7 8
永久替换
[root@localhost ~]# arr=(1 2 3 4 56 7 8)
[root@localhost ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 43: …ot@localhost ~]#̲ arr=({arr[@]/56/5 6})
[root@localhost ~]# echo ${arr[@]}
1 2 3 4 5 6 7 8
5.数组删除
删除整个数组
[root@localhost ~]# arr=(1 2 3 4 56 7 8)
[root@localhost ~]# echo ${arr[@]}
1 2 3 4 56 7 8
[root@localhost ~]# unset arr
[root@localhost ~]# echo ${arr[@]}
[root@localhost ~]#
、
删除数组中的元素
[root@localhost ~]# arr=(1 2 3 4 5 6 7 8)
[root@localhost ~]# echo ${arr[@]}
1 2 3 4 5 6 7 8
[root@localhost ~]# unset arr[7]
[root@localhost ~]# echo ${arr[@]}
1 2 3 4 5 6 7
总结
数组