bash仅支持一维数组,类型声明:
declare -i : 表示数值
declare -a :表示普通数组(默认,可不用声明类型)
declare -A :表示关联数组(必须声明类型,bash需4.0以上版本才支持,可通过bash –version查看版本)
一、普通数组(用数字为下标)
1.1数组赋值(修改值)方式
a).单个元素赋值
a[0]=1
a[2]=2
b).一次对全部元素赋值
a=(1 2 3)
c).按索引进行赋值
a=([0]=apple [1]=banana [2]=orange)
d).命令替换
a=(/var/log/*.log)
e).用户输入
read -a array
1.2数组长度
echo ${#array[@]} 数组的长度(建议查看方式)
echo ${#array[*]} 数组的长度
用以下示例来区分两者区别:
执行结果如下($*用双引号引起来后,所有的参数是一个串,查看所有元素时建议用$@):
1.3其它常用
echo {array[2]} 下标为2的元素值(元素从0开始计数)
array2=(${array1[@]}) 数组复制
echo ${!array[@]} 获取所有的下标
二、关联数组(可用非数字字符做下标,普通数组功能在关联数组下都可实现)
关联数组需事先声明,方法为:declare -A array
示例:
[root@localhost ~]# declare -A test
[root@localhost ~]# test=([apple]=a [banana]=b [orange]=o)
[root@localhost ~]# echo ${test[@]}
o a b
[root@localhost ~]# echo ${!test[@]}
orange apple banana
[root@localhost ~]#
三、数组切片
${array[@]:offset:number} offset: 偏移的元素个数 number: 取出的元素的个数
${array[@]:offset} 取出偏移量后的所有元素
${array[@]} 取出所有元素
示例:
[root@localhost ~]# array=(1 2 3)
[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# echo ${array[@]:1}
2 3
[root@localhost ~]# echo ${array[@]:1:1}
2
四、删除数组元素
unset ARRAY[index]
示例:
[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# unset array[1]
[root@localhost ~]# echo ${array[@]}
1 3
五、综合示例
示例1:写一个脚本,生成10个随机数,保存至数组中;而后显示数组下标为偶数的元素;
方法一:
方法二:
示例2:复制一个数组中下标为偶数的元素至一个新数组中
示例3:生成10个随机数,升序排序
示例4:打印九九乘法表
原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/7109