您的位置:首页 > 运维架构 > Shell

Linux shell 中的数组和关联数组

2016-07-10 02:55 405 查看

写在前面的话

我用开始废柴了,这个又是写给我自己看的了。

普通数组

1.数组的定义

在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯)。定义数组的一般格式就是: array_name=(element1 element2 element3 ...) 
数组名=(元素1 元素2 元素3 。。。) 

数组的定义用的是圆括号,和python中的tuple元组定义是相似的,但是元祖中的值一旦被定义就不能被改变,但是linux shell 中的数组值是可以被改变的。还有就是预先赋值的变量之间使用的是空格隔开的。

同样我们需要注意的是在linux shell 中所有的赋值语句也就是等号前后是不能有空格的,因为空格会被当做是命令来处理。

除了上述的定义方法之外,我们还可以直接采用index-value 索引-值 的这种方式来定义一个数组:

如下图所示:



2.数组的引用

定义了数组我们当然是要用的咯,那么我们要引用一个数组中的某个元素时(元素的索引同样和大部分的计算机语言一样是从0开始的)用的语句是${array_name[index]}
${数组名[数组的索引下标]}

如下图所示:
我们定义了一个数组然后要打印出某个特定的元素:



当然如果我们要引用的是定义的数组的所有元素,我们要用的方法如下所示:



如果我们要获取出数组的长度,我们可以用下面的方法:

${#array_name[*]} 或者是 ¥{#array_name[@]}

下图是打印出数组的长度:



关联数组

从Bash 4.0 (Bash 好容易调戏,那个风中女王的那个男主的哥哥) 引入了关联数组,也就是索引可以是文本,是不是感觉有点像字典那种数据结构(字典是啥,额,大哥你是学计算机的么)

首先我们必须要申明一下这个数组是关联数组,然后再使用

declare -A array_name

关联,英文是association 所以简写为 —A 我是这么记忆的

然后我们可以给这个数组赋值,同样是两种方法

第一种方法

array_name=([index1]=val1 [index2]=val2)

第二种方法

array_name[index1]=val1
array_name[index2]=val2

举一个例子运用一下咯:



如果我们需要知道关联数组的索引以及这个数组中元素的个数我们可以用下面的这个方法:



写在后面的话

你必须非常努力才可以看起来毫不费力~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: