Shell中创建序列和数组(list、array)的方法

关于linux数组定义,以及生成方法,请看:linux shell 动态生成 数组系列 seq使用技巧 。这里我主要说的是高效生成list 字符串,还有数组方法。

一、seq方法生成:

[chengmo@centos5 shell]$ aNumList=$(seq 100);
[chengmo@centos5 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 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

aNumList得到是字符串,不同之处以:空格分隔开。在linux里面,可以把它看作是list. 可以通过for…in  循环读取。

[chengmo@centos5 shell]$ for i in $aNumList;do echo $i;done;
1
2
3
4……

如果需要生成array只需要将$(seq 100) 再加个”()”即可。

[chengmo@centos5 ~]$ aNumList=($(seq 100));
[chengmo@centos5 ~]$ echo $aNumList
1
[chengmo@centos5 ~]$ echo ${#aNumList[@]}
100

长度是100的数组。

二、通过内部{begin..end}生成

这种方法生成seq非常方便。通过内部运算符完成。

[chengmo@centos5 ~]$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

[chengmo@centos5 ~]$ for a in {1..10};do echo $a;done;
1
2
3
4
5
6
7
8
9
10

三、性能比较

[chengmo@centos5 ~]$ time 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

real  0m0.000s
user  0m0.001s
sys   0m0.000s

[chengmo@centos5 ~]$ time echo $(seq 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

real  0m0.003s
user  0m0.002s
sys   0m0.001s

从上面可以看到,{begin..end}速度比seq调用快了不少了。 以后调用时候可以考虑通过内部操作符完成。

时间: 2015-07-08

Linux Shell 数组的创建及使用技巧

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

Shell脚本数组用法小结

array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈. PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈...废话少说,说下正题 1.怎么声明一个数组变量? 直接赋值: 复制代码 代码如下: array[0]="Zero" array[1]="One" array[2]="Two" declare声明: 复制代码 代码如下: declare -a array 小括号空格法:

Shell动态生成数组的多种方法

如果对linux shell 数组不是很熟悉的话,请看上一篇文章:linux shell 数组建立及使用技巧  ,这篇文章主要讲是动态生成数组系列.方法应该很多,我这里主要以一个求和计算的题目为例进行分析. 题目:请用linux shell 写一段脚本,实现从1..1000中所有偶数的和值. 方法一: 通过while 循环得到需要的结果: start=1; total=0; while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&tot

jQuery操作动态生成的内容的方法

本文实例讲述了jQuery操作动态生成的内容的方法.分享给大家供大家参考,具体如下: 由于jQuery是页面一加载获取页面元素的,后期动态生成的元素,通过$("#xxxx")获取不到,需要用原始的js语句来获取: document.getElementById("xxx").value 对于动态生成的元素,bind绑定的事件 也无法触发,需要通过jQuery提供的另外一个方法 .live() 这个方法是基本是的 .bind() 方法的一个变体.使用 .bind()

javascript动态生成树形菜单的方法

本文实例讲述了javascript动态生成树形菜单的方法.分享给大家供大家参考,具体如下: //======================================== //Envrionment to hold Listeners //======================================== tv_listeners = new Array() ; function listener( type , handler ) { this.type = type ;

C#动态调整数组大小的方法

本文实例讲述了C#动态调整数组大小的方法.分享给大家供大家参考.具体如下: 通常,我们创建一个数组后就不能调整其长度,但是Array类提供了一个静态方法CreateInstance用来创建一个动态数组,所以我们可以通过它来动态调整数组的长度. namespace ArrayManipulation { Class Program { static void Main (String[] args) { int[] arr = new int[]{1,2,3}; PrintArr(arr); ar

php动态生成版权所有信息的方法

本文实例讲述了php动态生成版权所有信息的方法.分享给大家供大家参考.具体实现方法如下: function copyright($start, $owner) { $date = date('Y'); echo "© Copyright "; if ( $start < $date ) { echo "{$start} - "; } echo "{$date} {$owner}"; } 演示范例: 如果当前年份是2013, 使用 copyr

vue+element-ui动态生成多级表头的方法

vue+element html配置: <div id="table">{{tableData}} <el-table :data="tabledata01" :span-method="tableSpanMethod" max-height="420"> <el-table-column v-for='item in tableConfig' :label="item.label&qu

vue侧边栏动态生成下级菜单的方法

循环传入的数据去生成下级菜单 <template> <div class="headBar"> <div class="title"> 微商城管理后台 </div> <el-menu class="el-menu-headBar" mode="horizontal" @select="handleSelect" background-color=&quo

Asp.net动态生成html页面的方法分享

此功能适用于后台数据库功能不强的web站点,即大部分文本不是存放在数据库的记录中,而是放在html文件或者xml文件中,仅仅把索引放到数据库中,如文章标题.类别.查询关键字等.这样适合于后台没有诸如MS Sql Server这样的数据库支持的Web站点.  适用于新闻发布系统,比如sina.163等都是采用动态生成html页面的.     适用于需动态定制页面的程序.比如论坛.聊天室等.可以加载定制好的html页面,来加强美观.     思路     1. 利用如Dw-Mx这样的工具生成html

ASP页面静态化批量生成代码分享(多种方法)

1.ASP两种简单的生成静态首页的方法 为什么要生成静态首页? 1.如果你首页读取的数据库次数比较多,速度很慢,而且占用很多服务器资源.使用静态页面访问速度当然快多了 2.搜索引擎容易搜索到 3.如果程序出问题,也能保证首页能访问. 4.其他的太多,自己想:) 应用方式: 如果你的首页是index.asp,你可以生成index.htm (默认访问顺序必须是index.htm,index.asp).这样访问者第一次访问到你的网站的时候打开的是index.htm .你可以把网站首页的链接做成inde

Shell获取字符串长度的多种方法总结

前言 我们在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳.汇总了求字符串的几种可能方法,话不多说了,来一起看看详细的介绍吧. 方法如下: [方法一]:利用${#str}来获取字符串的长度 [方法二]:利用awk的length方法 备注: 1) 最好用{}来放置变量 2) 也可以用length($0)来统计文件中每行的长度 [方法三]:利用awk的NF项来获取字符串长度 备注: -F为分隔符,NF为域的个数,即单行字符串的长度 [方法四]:利用wc的