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

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

1.png

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

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

方法一:

3.png

方法二:

4.png

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

5.png

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

6.png

示例4:打印九九乘法表

7.png

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

(0)
老鼠上了猫老鼠上了猫
上一篇 2015-08-24 21:33
下一篇 2015-08-24 21:44

相关推荐

  • 计算机的组成及其功能

    计算机的组成及其功能 计算机由五部分组成 运算器 实现算术运算和逻辑运算(和控制器组成CPU) 控制器 控制总线的使用权限,完成寻址和控制对内存当中的访问权限是做读访问还是写访问 存储器 内存,RAM(Random Access Memory) 输入(Input) 下指令,提供数据 输出(Output) 输出数据加工的结果

    2018-02-22
  • 内部命令与外部命令——Linux基本命令(3)

    1.     内部命令与外部命令 内部命令:由shell自带的,而且通过某命令形式提供 内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。 外部命令:在文件系统路径下有对应的可执行程序文件 外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。 2.     命令类…

    2017-07-13
  • FHS文件系统

    一、什么是FHS?   Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。 二、它的来源历史 …

    Linux干货 2016-10-17
  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • find、locate详细解析

    文件查找 在linux系统中如果我们不知道具体的文件的具体位置,我们可以使用文件查找命令来找到我们想找的文件,linux中也有相当优秀的查找命令,(如locate、find),通常查找速度快是locate,因为它是利用数据库查找的,所以速度很快,而find是全磁盘扫描进行查找,所以速度比较慢。 locate和find都是在文件系统上查找符合条件的文件含义。 …

    Linux干货 2016-08-13
  • 磁盘分区和文件系统管理

    磁盘分区 两种分区方式:MBR,GPT  MBR: Master Boot Record,1982年,使用32位表示扇区 数,分区不超过2T  如何分区:按柱面      0磁道0扇区:512bytes      446bytes: boo…

    Linux干货 2016-08-29

评论列表(2条)

  • stanley
    stanley 2015-08-24 21:43

    实战的案例非常有不错,很有吸引力

    • 老鼠上了猫
      老鼠上了猫 2015-08-27 19:18

      @stanley谢谢!