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. 121. Best Time to Buy and Sell Stock (一) leetcode解题笔记

    121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...

  2. 《笨办法学C》笔记之Makefile

    使用gcc编译C语言源码 在Linux系统中,C语言源码需要用gcc编译为二进制可执行文件,才能够运行. $ gcc test.c -o test 这句命令就将test.c文件编译为test二进制可执 ...

  3. Linux服务器上安装织梦CMS

    安装篇 第一步:配置防火墙(默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置): vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上 ...

  4. 01-Swift 介绍

    简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 几家欢喜,几家愁 愁者:只学Object-C的人 欢喜者: ...

  5. LinuxMM--Memory Pressure

    Memory pressure定义在操作系统中,用户分配.文件缓存.网卡包缓冲区等等都会消耗内存.一旦出现内存紧张就会导致memory pressure.引发当某个任务需要请求内存时就有可能引发mem ...

  6. struts2中如何使用主题theme

    一.什么是主题? 主题就是一种风格化标签,能够让所有UI标签能够产生同样的视觉效果而归集到一起的一组模板,即风格相近的模板被打包为一个主题 二.struts2提供的主题有哪些呢?struts2中如何修 ...

  7. mysql解压缩安装(一)

    MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\P ...

  8. php socket解决方案

    最近一直在为移动应用提供 php服务端api,以前 实时交互数据需求不严格(定时从手机端发送http请求),现在业务需求变更, 需要实时交互式接口,必须增加socket. 服务端框架使用YII 1.1 ...

  9. OS 系统下安装MySql 配置MySql环境变量

    学习Hive需要,闲话不说 本文的内容: 下载Mysql for Mac 下载Mysql Workbench 安装 Mysql 和 Mysql Workbench 配置Mysql在OS 系统上的环境变 ...

  10. Block循环引用问题研究

    自从苹果在objc中添加Block功能支持以后已经过了很久.目前网上对于Block的使用有很多介绍.不过对于Block的内存管理问题,则是众说纷纭.再加上objc开始使用ARC以后,对于Block的内 ...