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开始。
[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 数组的更多相关文章
- Linux数组array基础
Linux数组array基础[${a[*]}和$a的区别] Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[i ...
- Linux数组基础
执行结果:
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- shell脚本变量
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 ...
- 01 shell编程之变量定义
一.SHELL介绍 ㈠ 什么是shell脚本? 简单来说就是将需要执行的命令保存到文本中,按照顺序执行.它是解释型的,意味着不需要编译. 若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= s ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- php数组函数,字符串,linux命令
1>> Linux常用命令一. 文件目录操作命令1. ls命令 命令格式:ls [选项] [目录名] 命令功能:列出目标目录中所有的子目录和文件.2. 命令格式:cd [目录名 ...
- 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理
前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...
- Linux, Mac下Shell 数组 Array 的修理工
我的测试基本都是在Mac,及Unix环境下测试的,如无特别注明,默认就是Mac 不论你看到这篇随笔是被shell array的奇淫巧技,还是发现shell array就在一对{}里面就可以做那么多勾当 ...
随机推荐
- free-electrons linux内核和驱动
操作系统的三个作用:1.管理硬件资源:2.提供独立于架构和硬件的可移植的软件接口3.处理不同应用对相同硬件资源的同时访问 系统调用接口是稳定的,系统调用由c函数库封装,用户程序基本不需要直接调用系统函 ...
- 新版本MySQL Server 5.7的免安装版本设置
今天重新配置电脑,安装java开发运行的相关环境,在安装mysql的过程中,遇到了一些问题. 因为在网站上下载的是免安装版本的mysql 5.7 ,所以在安装过程中只需要解压缩zip的压缩包即可. 之 ...
- block的解析
1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方 ...
- 伟大的GCD和NSOperationQueue
一. GCD GCD中最重要的两个东西 任务 和 队列 任务就是一段代码(用来缓存,下载,计算等操作) 队列从大的方面分为两个队列:主队列(串行队列)和 自己创建的队列(串行,和并行) 主队列中: 在 ...
- nginx搭建高性能流媒体技术
一. 系统环境 系统版本: CentOS 5.8x86_64 Nginx版本: Nginx-1.4.2.tar.gz Yamdi版本:Yamdi-1.9.tar.gz 二. 自动化安装 #!/bin/ ...
- 如何使用yum下载rpm包
一.使用 yum-downloadonly 插件 参考文章:ghosTzone 的博客http://ghostm55.is-programmer.com/posts/6422.html yum是一个优 ...
- [fortify] 不安全的函数eregi()
PHP 5.4/5.3弃用函数eregi() memory_limit绕过漏洞 [日期:2012-04-02] 来源:Linux社区 作者:Linux [字体:大 中 小] 发布日期:2012- ...
- 使用IConfigurationSectionHandler在web.config中增加自定义配置
一. 场景 这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等.二. 基本实现方法1. 定义配置节点对应的类:Site ...
- 使用Glyph Designer创建位图字体
使用Glyph Designer创建位图字体 转http://book.2cto.com/201210/6610.html <iOS 5 cocos2d游戏开发实战(第2版)>将引导 ...
- 转发 win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案
win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NE ...