数组的类型


        之前说到变量的定义,一个变量代表一个值,一个字符串,一个命令等等。但变量中只有一个值,而数组中可以包含多个值,并且拥有对应的索引。以下举例进行说明,让我们了解到什么是数组。


#定义变量name

name=dingxiang

-------------------------------

| d | i | n | g | x | i  | a | n | g |

--------------------------------

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8  |          索引

----------------------------- --

name变量每个字母对应不同索引下标,那怎么通过对应索引看到对应字母呢?如下:

[root@localhost ~]# name=dingxiang

[root@localhost ~]# echo ${name:0:4}     #显示4个字母,不超过索引4

ding

[root@localhost ~]# echo ${name:4}     #显示第四个索引后的内容

xiang

[root@localhost ~]# echo ${name:1:-2}   #显示从第二个索引到倒数第三个索引的值

dingxia


#普通数组

 定义普通数组,在python里为列表

books=(linux java python shell docker)

------------------------------------------

| linux | java | python | shell | docker |

------------------------------------------

|   0   |    1   |     2    |     3   |     4       |        索引(py下标)

------------------------------------------

普通数组如何显示索引及对应值呢?如下所示:

[root@localhost ~]# books=(linux java python shell docker)

[root@localhost ~]# echo ${books[*]}     #显示books数组的所有值,${books[@]}效果一样

linux java python shell docker

[root@localhost ~]# echo ${books[0]}     #显示对应索引的对应值,0对应为linux

linux

[root@localhost ~]# echo ${books[-4]}      #显示对应索引的对应值,-4为索引倒着数的第四个值

java

[root@localhost ~]# echo ${books[@]:1:3}    #显示索引从1开始,往后数三个的的值

java python shell


#关联数组

#定义一个关联数字info

info=([name]=dingxiang [sex]=male [age]=22 [height]=177 [skill]=cloud)

----------------------------------------

| dingxiang | male | 22 |   177 |  cloud  |

----------------------------------------

|   name     | sex   | age | height | skill   |        索引

----------------------------------------

关联数组需要declare去定义

[root@localhost ~]# declare -A info     #定义关联数组info

[root@localhost ~]# info=([name]=dingxiang  [sex]=male [age]=22 [height]=177 [skill]=cloud)      #赋值

[root@localhost ~]# echo ${info[name]}      #显示关联数组索引name的值

dingxiang

[root@localhost ~]# echo ${info[@]}      #显示所有索引的值

dingxiang 177 22 cloud male

[root@localhost ~]# echo ${!info[@]}    #显示所有索引信息,这里定义完自动给你重新排序了,但依旧是一一对应的关系

name height age skill sex

[root@localhost ~]# echo ${info[@]:1:3}   #显示第一个到第三个索引的值

tianyun 177 22