linux中数组的定义与使用

 

 

    我们常说,程序=指令+数据,往细一点的方向说,指令具体指的有哪些?数据又有哪些?

总结一下:

指令大概包括,编程语言中的语法关键字(如bash编程中的关键字有for,while,case,if,until,continue,break),还包括系统中的命令,和一些自己编写的函数,这些东西都可以称为指令。

 

数据最常见的就是变量了,还有文件,还有一个非常常用的数组。

今天来给大家分享一下数组。

数组是什么?

我们都知道,变量是一段命名的内存空间,只有一个元素,而数组,简单来说它是许多元素按一顺序,连续的存储在内存空间中的这段空间的统称。

一个数组,它包括多个元素。

那么,数组是如何声明的呢?

我们使用变量时,不用声明,但使用数组时,要声明一下,不然系统会将其当成一个包括了多个字符串的单个变量来处理。

索引数组的声明:

declare -a     a即为array的意思

 

如:declare -a number

linux中数组的定义与使用

这样一来,number这个就已经被声明为一个数组了。

数组声明好了,我们如何给数组赋值呢?

有多种方法:

1:按需要一个元素一个元素的添加

2:一次性将多个元素添加进去

3:按稀疏格式添加

4:通过交互式的“read -a” 方式

如图:

linux中数组的定义与使用

此种方式是一次只加一个元素。

 

看看第二种方式:

linux中数组的定义与使用

第三种:按稀疏格式添加:

linux中数组的定义与使用

我们可以看到 ,添加时并不是按照0123这样的顺序来的,而是稀疏格式的。

 

第四种:通过read -a 声明一个数组并赋值

 

linux中数组的定义与使用

 

以上是数组的赋值。

需要注意的是,数组虽然存储多个元素,但数组字句却只能有一个。从上面这些图中我们也可以看出,引用数组中的某个元素是通过一种索引机制来实现的。

元素存储在数组中,一般情况下,是按照顺序编号的,当然,顺序是从0开始编号。当用数组名+编号就可以唯一标识一个数组中的某个数据了。

即:

arrayNAME[#]

引用时也要注意:

${arrayNAME[#]}

重要的事情说三遍:花括号不能少!花括号不能少!花括号不能少!

示例:将刚才我们存储于数组中的c给打印出来。

linux中数组的定义与使用

通过数组的声明,赋值,我们可以知道,虽然数组中元素编号有不按顺序赋值的,但都是按编号索引的,我们称这类数组为索引数组。

还有一类数组,并不是按编号索引的,而是照特定的字符索引的,我们称这类数组为关联数组。

关联数组的声明:

declare  -A

既然不按编号进行赋值,那关联数组是如何将给元素赋值,并进行引用的呢?

linux中数组的定义与使用

如上图所示,我们通过特定的关键字,对关联数组中的某个特定的值进入赋值,引用的时候,再通过数组名+关键字的方式引用。

好了,这些就是索引数组和关联数组的声明,赋值,引用。相信大家都有一个基本的了解。通过数组,我们能够传递更多的数据给指令进行处理。下面例举一个小练习,若能掌握,说明就是真的理解什么是数组了。

例:随机生成十个数,赋值给一个数组,要求将数组内的这十个数,进行排序,然后显示出来。

代码: 

 linux中数组的定义与使用

代码的执行结果: 

代码执行了四次,得到的结果:

linux中数组的定义与使用 

当然啦,这只是我个人的做法,相信朋友们都有自己的思想与做法,只要结果正确,基本都是正确的。

希望数组的分享对大家有帮助。

原创文章,作者:old_radish,如若转载,请注明出处:http://www.178linux.com/76801

(2)
old_radishold_radish
上一篇 2017-05-23 16:58
下一篇 2017-05-24 17:02

相关推荐

  • 权限管理和字符匹配示例

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 cp -r /etc/skel /home/tuser1 chmod -R 700 tuser1 2、编辑/etc/group文件,添加组hadoop hadoop:x:999 3、手动编辑/etc/passwd文件新增一行,…

    2017-12-25
  • 如何在微软Azure云机上添加新磁盘

    大家好: 最近在项目实践中,分享下如何在微软Azure云机上添加新磁盘。 首先需要查看下是否有未用上的磁盘,先fdisk -l查(看下图)并和Azure技术确认该磁盘是否可永久保存数据: 然后找到未分区的磁盘号,如上图中的/dev/sdc,再 fdisk /dev/sdc后开始在该新磁盘上进行分区创建: 为方便管理,我们一般就创建一个分区,然后进行格式化: …

    Linux干货 2016-11-27
  • 软链接和硬链接的区别

    文件管理 前言 Linux的一则哲学:一切皆文件。既然入坑,那么管理linux就是管理一堆文件,操作文件这是展示个人十八般武艺的时候,功夫高下一招下。怎么成为高手,高手的招式都有哪些,拳脚掌刀枪棍棒,一招一式如何练就。 1文件存储 文件存储就好比每个练武人必备的技能——挨打,在你耍十八般武艺前,必须先扛住对方的一掌。我们不必拥有金刚罩铁布衫,至少要学会如何躲…

    Linux干货 2016-10-20
  • MHA+keepalived 高可用MYSQL集群

    一、MHA简介 二、试验环境及要求 三、部署MHA 四、测试MHA集群功能 一、MHA简介     MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案。在MySQL故障切换过程中,MHA能做到在0~30秒之内手动或自动(结合脚本)完成数据库的故障切换操作,并且在…

    2017-02-25
  • 马哥教育网络班21期-第二周课程作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp即copy的简写,我们可以用它来复制一些文件即将,源文件的数据流复制到目的文件中。和下面要讲的rm,mv,一样都是一些非常基础的命令。关于这个命令,我们有个小窍门,那就是根据 ls file这个命令是否执行成功来判断file文件是否存在。 关于cp,我们有一些要点要注意: cp…

    Linux干货 2016-07-07
  • poweroff

    poweroff命令详解

    Linux干货 2018-03-04