在Shell脚本中,数组是一个可以存储多个值的变量。与大多数编程语言中的数组类似,Shell数组也允许你通过索引来访问和修改其元素。
一、定义
1、一次赋一个值
# 语法
数组名[索引下标]=值
# 案例
array[0]='张三'
array[1]='李四'
array[2]='王五'
array[3]='胖太乙'
2、一次赋多个值
# 语法
数组名=(值1 值2 值3 ...)
# 举例1
array1=('张三' '李四' '王五' '赵六' '胖太乙' )
# 举例2
# 也可以将一个文件的内容赋值给数组
# 1. 查看文件内容
[root@converts shells]# cat fun.sh
#!/bin/env bash
hello(){
echo '这是一个hello方法'
}
getName(){
echo '我的名字叫胖太乙'
}
# 开始赋值
[root@converts shells]# array2=(`cat /root/shells/fun.sh`)
# 打印数组全部内容
[root@converts shells]# echo ${array2[*]}
#!/bin/env bash hello(){ echo '这是一个hello方法' } getName(){ echo '我的名字叫胖太乙' }
[root@converts shells]#
二、读取
# 语法
${数组名[元素下标]}
echo ${array[0]} # 获取数组里第一个元素
echo ${array[*]} # 获取数组里的所有元素
echo ${#array[*]} # 获取数组里所有元素个数(可以用来获取数组长度)
echo ${!array[@]} # 获取数组元素的索引下标
echo ${array[@]:1:2} # 访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素
# 举例
[root@converts shells]# echo ${array[0]}
张三
[root@converts shells]# echo ${array[1]}
李四
[root@converts shells]# echo ${array[2]}
王五
[root@converts shells]# echo ${array[3]}
胖太乙
[root@converts shells]# echo ${array[*]}
张三 李四 王五 胖太乙
[root@converts shells]# echo ${#array[*]}
4
[root@converts shells]# echo ${!array[@]}
0 1 2 3
[root@converts shells]# echo ${array[@]:1:2}
李四 王五
[root@converts shells]#
三、替换
你可以通过重新为特定索引赋值来替换数组中的元素:
array1[1]="新元素2"
现在,array1[1]
的值是“新元素2”。
四、删除数组元素
Shell没有直接删除数组特定元素的功能,但你可以通过将数组重新赋值为一个不包含该元素的新数组来实现类似的效果。或者,你可以通过将元素设置为空字符串或unset特定索引来“删除”它,但这实际上只是将元素设置为未定义状态,而不是从数组中移除它。
五、数组切片
你可以使用 ${数组名[@]:起始索引:长度}
的格式来获取数组的子集(切片):
echo ${array1[@]:1:2} # 输出:李四 王五
这将输出从索引1开始,长度为2的子数组。
1
暂无评论