linux中利用脚本编写数组,shell脚本编程之数组

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[*]}   数组的长度

用以下示例来区分两者区别:

3c8ce6380daa33c267ccb0e2e66a02de.png

执行结果如下($*用双引号引起来后,所有的参数是一个串,查看所有元素时建议用$@):

3c8ce6380daa33c267ccb0e2e66a02de.png

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个随机数,保存至数组中;而后显示数组下标为偶数的元素;

方法一:

3c8ce6380daa33c267ccb0e2e66a02de.png

方法二:

3c8ce6380daa33c267ccb0e2e66a02de.png

示例2:复制一个数组中下标为偶数的元素至一个新数组中

3c8ce6380daa33c267ccb0e2e66a02de.png

示例3:生成10个随机数,升序排序

3c8ce6380daa33c267ccb0e2e66a02de.png

示例4:打印九九乘法表

3c8ce6380daa33c267ccb0e2e66a02de.png

原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/7109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值