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

:介绍

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

普通数组

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

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

array=(1 2 3 4 5)

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

array[0]="value"

array[1]="value"

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

[root@localhost backup]# echo ${array[]}

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

[root@localhost backup]# echo ${array[*]}

[root@localhost backup]# echo ${array[@]}
    

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

[root@localhost backup]# echo ${#array[*]}

4.改变数组元素的值

[root@localhost backup]# array[2]="33"
[root@localhost backup]# echo ${array[*]}

5.定义索引并引用

[root@localhost backup]# i=
[root@localhost backup]# echo ${array[$i]}

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

[root@localhost backup]# echo ${!array[*]}
    

关联数组

普通数组的索引只能是整数,比如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.显示单个数组元素内容

[root@localhost backup]# echo ${ass_array[book]}
yuan

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

echo ${ass_array[*]}
yuan yuan

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

[root@localhost backup]# echo ${!ass_array[*]}
pen book

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

[root@localhost backup]# echo ${#ass_array[*]}

动态数组生成方法

方法1:

可以使用seq

[root@localhost backup]# numarray=$(seq )
[root@localhost backup]# echo $numarray

方法2:

[root@localhost backup]# echo {..}
                                                                                                   

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

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

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

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

time echo $(seq )

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

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

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

总结

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

备注:

作者:pursuer.chen

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

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

《欢迎交流讨论》

Linux 数组的更多相关文章

  1. Linux数组array基础

    Linux数组array基础[${a[*]}和$a的区别] Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[i ...

  2. Linux数组基础

    执行结果:

  3. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  4. shell脚本变量

    既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 ...

  5. 01 shell编程之变量定义

    一.SHELL介绍 ㈠ 什么是shell脚本? 简单来说就是将需要执行的命令保存到文本中,按照顺序执行.它是解释型的,意味着不需要编译. 若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= s ...

  6. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  7. php数组函数,字符串,linux命令

    1>> Linux常用命令一. 文件目录操作命令1. ls命令    命令格式:ls [选项] [目录名]    命令功能:列出目标目录中所有的子目录和文件.2. 命令格式:cd [目录名 ...

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

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...

  9. Linux, Mac下Shell 数组 Array 的修理工

    我的测试基本都是在Mac,及Unix环境下测试的,如无特别注明,默认就是Mac 不论你看到这篇随笔是被shell array的奇淫巧技,还是发现shell array就在一对{}里面就可以做那么多勾当 ...

随机推荐

  1. 异步请求Ajax

    AJAX:Asynchronous JS And XML,包括HTML.CSS.JS.DOM.XML.JSON等,客户端技术范畴.主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验:实 ...

  2. AJAX应用优势

    国内翻译(仅音译)常为 “阿贾克斯” 和阿贾克斯足球队同音. 使用ajax 构建应用程序 这个术语源自描述从基于 Web 的应用到基于数据的应用的转换.在基于数据的应用中,用户需求的数据如联系人列表, ...

  3. 前端js 判断输入的必须是数字,判断金钱

    //输入的必须是数字 $(".xzjl").on("keyup", ".num", function () { var v = $(this ...

  4. BZOJ2933: [Poi1999]地图

    Description   一个人口统计办公室要绘制一张地图.由于技术的原因只能使用少量的颜色.两个有相同或相近人口的区域在地图应用相同的颜色.例如一种颜色k,则A(k) 是相应的数,则有: 在用颜色 ...

  5. vbox 虚拟机共享文件夹 debian

    主机64位windows7 虚拟机Debian 8 64位 注意:在网络更新时,可能需要修改 etc/apt/sources.list 文件,把前几条从CD更新删除掉,这样就会从网络更新 1.vbox ...

  6. doxygen的使用(一)配置并生成文档

    原创文章,欢迎阅读,禁止转载. doxygen是个好用的文档生成工具,他的强大功能有很多介绍,我就不说了.自带的chm帮助手册很全面,包括功能.注释规范.怎么配置.工具用法等.doxygen的用法共3 ...

  7. Celery Running Environment

    After running celery in my machine, I got this: Running a worker with superuser privileges when the ...

  8. oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”

    Oracle删除用户的提示无法删除当前已连接用户两种解决方法如下: 1.先锁定用户.然后查询进程号,最后删除对应的进程.在删除对应的用户 SQL>alter user XXX account l ...

  9. vim指令常用

    慢慢尝试使用vim,不断学习使用新的快捷键,将常用快捷键但经常容易忘的写下来, 1. 复制黏贴 命令行模式下按住v选中,y表示复制,d表示剪切,p为复制.

  10. (期望)A Dangerous Maze(Light OJ 1027)

    http://www.lightoj.com/volume_showproblem.php?problem=1027 You are in a maze; seeing n doors in fron ...