Linux 数组

200 ? "200px" : this.width)!important;}
-->

:介绍

在shell4.0之后支持普通数组和关联数组,普通数组只能使用整数作为索引,关联数组可以使用字符串作为索引。

普通数组

普通数组的定义方法有如下两种,注意数组的索引是从0开始

方法1:值之间是使用空格隔开

array=(1 2 3 4 5)

方法2:直接定义索引-值的方法,其实该方法相当于是在给数组元素赋值。

array[0]="value"

array[1]="value"

1.查看单个数组元素值,值的下标从0开始。

[[email protected] backup]# echo ${array[0]}
1

2.查询数组所有元素的值,使用*或者@

[[email protected] backup]# echo ${array[*]}
1 2 3 4 5
[[email protected] backup]# echo ${array[@]}
1 2 3 4 5

3.查询数组元素的个数,#

[[email protected] backup]# echo ${#array[*]}
5

4.改变数组元素的值

[[email protected] backup]# array[2]="33"
[[email protected] backup]# echo ${array[*]}
1 2 33 4 5

5.定义索引并引用

[[email protected] backup]# i=3
[[email protected] backup]# echo ${array[$i]}
4

6.查询数组的索引,使用!

[[email protected] backup]# echo ${!array[*]}
0 1 2 3 4

关联数组

普通数组的索引只能是整数,比如array[0],array[1]等,关联数组的索引可以是字符串,使用关联数组之前必须先声明关联数组。

声明关联数组:

declare -A ass_array

将元素添加到关联数组,方法有两种:

方法1:列表发赋值

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

方法2:单独赋值

ass_array[index1]=val1

ass_array[index2]=val2

举例:

declare -A ass_array
ass_array=([book]="10 yuan" [pen]="1 yuan")

1.显示单个数组元素内容

[[email protected] backup]# echo ${ass_array[book]}
10 yuan

2.查询关联数组所有元素内容

echo ${ass_array[*]}
1 yuan 10 yuan

3.查询关联数组的索引,在数组前使用!

[[email protected] backup]# echo ${!ass_array[*]}
pen book

4.查询关联数组的元素个数

[[email protected] backup]# echo ${#ass_array[*]}
2

动态数组生成方法

方法1:

可以使用seq

[[email protected] backup]# numarray=$(seq 100)
[[email protected] backup]# echo $numarray
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

方法2:

[[email protected] backup]# echo {1..100}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

这两种定义的动态数组可以直接在循环中调用,例如:

for i in $mumarray;do echo $i;done;

for i in {1..100};do echo $i;done;

测试二者的效率,可以在其前面加上time

time echo $(seq 10000)

real    0m0.056s
user    0m0.047s
sys    0m0.002s
time echo {1..10000}

real    0m0.030s
user    0m0.023s
sys    0m0.000s

测试10000个元素,显然第二种方法性能会更好。

总结

普通数组和关联数组只是定义的方法不一样,查询的方法是一样的。


备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

时间: 2024-12-14 21:17:58

Linux 数组的相关文章

linux 数组的简单总结

今天总结一下linux数组.然后今天基本就搞定了这一段时间就不会再怎么总结了因为接下来就是得看awk数组了接下来这些都看完就开始学习一些基本的东西了比如各类文件系统或者负载均衡以及数据库的一些东西了话不多说.开始总结 linux数组总的来说还是比较简单的毕竟是一个脚本语言就目的和需求而言的 linux 支持一维数组,只要用小括号引起来就可以,数组间每个元素用空格隔开,像这样a=(a b b c x d d f f)这样就可以了,说实话.很简单.但基本用的不多除非没有别的解决办法了.不然我不会费劲

Linux数组array基础

Linux数组array基础[${a[*]}和$a的区别] Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[index] = value 下面以一个简单的脚本来说明,脚本内容如下: #!/bin/bash #定义数组 A=(a b c d e f ) #把数组按字符串显示输出 echo ${A[@]} #数组的长度表示${#A[*]} len=${#A[*]} echo ${#A[*]} #屏幕显示:6 #

linux数组变量

shell中数组定义: 可以整体定义数组: ARRAY_NAME=(value0 value1 value2 value3 ...) 或者: ARRAY_NAME=( value0 value1 value2 value3 ... ) 此时数组的下标默认是从0开始的,还可以单独定义数组的各个分量: ARRAY_NAME[0]=value0 ARRAY_NAME[1]=value1 ARRAY_NAME[n]=valuen ... 可以不使用连续的下标,而且下标的范围没有限制. 取得数组中的元素:

20150915 Linux 数组 sed awk

第一部分数组: bash脚本编程:     变量:变量名   ,命名的命名空间     数组:连续的多个独立内存空间:每个内存空间相当于一个变量:         数据元素的引用:数组名[索引] bash 4.0+以后版本支持二种类型:         传统数组(基本数组):索引为数字,从0开始编号:             declare -a ARRAY_NAME         关联数组:索引可以自定义,可以使用任意字符串做索引:             declare -A ARRAY_

Linux Shell 创建序列数组

关于linux数组定义,以及生成方法,请看:linux shell 动态生成 数组系列 seq使用技巧 .这里我主要说的是高效生成list 字符串,还有数组方法. 一.seq方法生成: 1 2 3 [[email protected] shell]$ aNumList=$(seq 100); [[email protected] shell]$ echo $aNumList 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2

合并_01php基础语法(8days)笔记

一.入门指引 1.php是什么? PHP是什么? Hypertext Preprocessor,超文本预处理器 Personal Home Page,个人主页 是一种在服务器端执行的脚本语言,可嵌入到 HTML中,尤其适合 web 开发. ? php可以做什么? 网站,web程序 B/S架构 ? ? 命令行脚本 桌面应用程序 ? ? 二.安装Apache 制作一台服务器,来提高网页服务,只要安装了一个能提供网页服务的软件的电脑,就可以称之为网页服务器. 常见的网页服务器软件 Apache IIS

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

linux基础学习第十三天(数组、字符串变量处理)

2016-08-22 授课内容: 数组 高级字符串操作 一.数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 数组名和索引 索引:编号从0开始,属于数值索引 bash的数组支持稀疏格式(索引不连续) 1.声明数组: declare -a ARRAY_NAME(并非强制声明,但最好按规范声明) declare -A ARRAY_NAME: 关联数组 2.数组元素的赋值: (1) 一次只赋值一个元素: ARRAY_NAME[INDEX]=VALUE [1

linux shell 数组建立及使用技巧

转自linux shell 数组建立及使用技巧 linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [[email protected] ~]$ a=(1 2 3 4 5)[[email protected] ~]$ echo $a1 一对括号表示是数组,数组元素用“空格”符号分割开. 2.数组读取与赋值 得到长度: [[email protected] ~