概述
array作为一种数据结构,在所有高级语言编程中都是有直接提供和实现的,shell 肯定也是会使用到的。
数组的声明
怎样声明一个数组变量?假设数组的变量名为array。
- 直接赋值(根据数组的下标进行赋值)
array[0]="a"
array[1]="b"
array[3]="c"
- 结合关键字declare 进行声明
declare -a array
- 小括号空格法
array=("a" "b" "c")
- 引号空格法
array="a b c d e"
- 混合法
array=([0]="a" [1]="b" [2]="c")
数组的长度
在shell中如何获取数组的长度?假设数组的变量名为array。
#获取整个数组的长度
echo ${#array[@]}
echo ${#array[*]}
------------------------------------------------------------------------------
# 获取数组单个元素的长度(i表示数组元素的下标)
echo ${#array[i]}
数组的值
在shell中如何获取数组的值?假设数组的变量名为array。
#获取数组某个下标(元素)的值:
echo ${array[i]}
------------------------------------------------------------------------------
#获取整个数组(即所有元素)的值:
echo ${array[@]}
数组的遍历
在shell中如何遍历一个数组?假设数组的变量名为array。
- 标准for循环
for (i=0;i<=${#array[@];i++})
do
echo ${array[i]}
done
- for…in…循环
for value in ${array[@]}
do
echo ${value}
done
数组的删除
#删除数组中的某个元素;其中i表示数组元素的下标
unset array[i]
------------------------------------------------------------------------------
#删除整个数组
unset array
数组的切片(数组的提取)
#定义一个数组array
array=("a" "b" "c" "d" "e" "f")
#获取数组的长度
[ yuki@myhost ~ ] echo ${#array[@]}
6
[ yuki@myhost ~ ] echo ${#array[*]}
6
#获取数组下标为1的元素的值
[ yuki@myhost ~ ] echo ${array[1]}
b
#获取数组的所有值
[ yuki@myhost ~ ] echo ${array[@]}
b
#从数组下标为n开始切片到下标为m的地方,包前n下标的值不包后m下标的值
# 语法:echo ${array[@]:n:m}
[ yuki@myhost ~ ] echo ${array[@]:0:3}
a b c
[ yuki@myhost ~ ] echo ${array[@]:0:4}
a b c d
#从数组下标为m开始切片到数组末尾,包括m下标的值
# 语法:echo ${array[@]:m}
[ yuki@myhost ~ ] echo ${array[@]:1}
b c d e f
[ yuki@myhost ~ ] echo ${array[@]:5}
f