文章目录
shell数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。
数组的作用
获取数组的长度
获取元素的长度
遍历元素
元素切片
元素替换
元素删除
定义数组
数值类数组的定义
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
array_name=(数值1 数值2 数值3 ...... 数值n)
字符串类型数组
同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开:
arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss');
一般定义shell数组有四种写法:
1)定义一组:数组名=(数值1 数值2 数值3 ...... 数值n)
2)逐个定义:数组名=([0]=数值1 [1]=数值2 ...... [n-1]=数值n)
3)列表定义:列表名=“数值1 数值2 数值3 ...... 数值n”
数组名=($列表名)
4)定义一个:数组名[0]=数值1
数组名[1]=数值2
数组名[2]=数值3
数组名[n]=数值n+1
12345678
5)根据上面的定义,应该明白在数组中数值表示的是元素,0-n表示的是下标,输出数组是
echo ${arr[*]},其中“*”表示的是所有,和@表示的一样含义
一般使用的是找出下标和数组长度之间的关系。
举例说明(快速创建数组、奇数数组)
要求1:快速创建一个数组,元素由用户自己定义
[root@localhost opt]# vim arr.sh
#!/bin/bash
#快速创建一个数组
for ((i=0;i>=0;i++))
do
read -p "请输入你需要定义数组元素:" num
##############如果用户输入的是空值则退出条件判断#################
if [ -z $num ];then
break
else
###########定义数组,相当于列表定义################
arr[$i]=$num
fi
done
###############输出数组#####################
echo "你的数组是:${arr[*]}"
[root@localhost opt]# sh arr.sh
请输入你需要定义数组元素:12
请输入你需要定义数组元素:45
请输入你需要定义数组元素:56
请输入你需要定义数组元素:78
请输入你需要定义数组元素:56
请输入你需要定义数组元素:
你