1、从数组的下标分为索引数组、关联数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* 索引数组,即通常情况下所说的数组 */
var ary1 = [1,3,5,8];
//按索引去取数组元素,从0开始(当然某些语言实现从1开始)
//索引实际上就是序数,一个整型数字
alert(ary1[0]);
alert(ary1[1]);
alert(ary1[2]);
alert(ary1[3]);
 
/* 关联数组,指以非序数类型为下标来存取的数组  python中称为字典 */
var ary2 = {};
//存取时,以非序数(数字),这里是字符串
ary2["one"] = 1;
ary2["two"] = 2;
ary2["thr"]  = 3;
ary2["fou"] = 4;

2、从对数据的存储分为静态数组、动态数组

1
2
3
4
5
6
7
8
9
10
// java中的静态数组
// 定义后数组的长度固定了不能改变,按索引取数组元素
Int[] ary1 = {1,3,6,9};
 
// java中的动态数组
// java中的ArrayList实现是以Array为基础的,这里说动态数组是广义的,不管采用什么方式实现。
List<Integer> ary2 = new ArrayList<Integer>();
ary2.add(1);//可以动态的添加元素,数组的长度也随着变化
ary2.add(3);
ary2.add(6);<strong> </strong>
1
2
3
4
5
6
7
/* js的数组属于动态数组 */
var ary = [];//定义一个数组,未指定长度
ary[0] = 1;//可以动态的添加元素
ary.push(3);
ary.push(5);
 
alert(ary.join(","));//输出1,3,5

js的数组同时属于索引数组和动态数组,因为本质上它就是一个js对象,体现着js动态语言特性。但js的索引数组并非“连续分配”内存的,因此索引方式并不会带来很高的效率。而java中的数组则是连续分配内存的。

shell数组正式名叫索引数组,也就是通常概念意义上的数组

定义  一对括号表示是数组,数组元素用“空格”符号分割开。

读取  用${#数组名[@或*]} 可以得到数组长度

读取  用${数组名[下标]} 下标是从0开始  下标是:*或者@ 得到整个数组内容

赋值  直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素

删除  直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。

分片  直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。

替换  调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。

[root@84-monitor t]# ./arr "4|5|6|" "aa|bb|cc|dd"
4
3
4|100|6
4 99/00 6
4|100|6
6
4|100
100
4

aa|bb|cc|dd
aa bb
cc dd
1
cc dd
[root@84-monitor t]# cat arr
#change default space
IFS="|"
#define array
arr=($1)
arr[1]=100
#default read first array element
echo "$arr"
#read array length
echo "${#arr[@]}"
echo "${arr[*]}"
#read array first element
echo "${arr[@]/1/99/}"
echo "${arr[*]}"
echo "${arr[2]}"
unset arr[2]
echo "${arr[*]}"
echo "${arr[1]}"
echo "${arr[0]}"
unset arr
echo "${arr[*]}"
arr=($2)
echo "${arr[*]}"
echo "${arr[@]:0:2}"
echo "${arr[@]:2:2}"

c=(${arr[@]:2:2})
echo "${#c[@]}"
echo "${c[*]}"

数组的定义,未设置的下标为空

#a[0]=1;a[2]=2;a[3]=3

#a=(1 2 3 4 5)

#a=([1]=3 [4]=34 [7]=23)

使用数组

echo ${a[1]};echo ${a[2+2]}

shell之数组的更多相关文章

  1. 每天一个shell知识--数组

    1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL ...

  2. Linux shell之数组

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  3. linux shell 中数组使用方法介绍

    linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  4. shell脚本-数组

    shell脚本-数组 数组 变量:存储单个元素的内存空间. 数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 数组索引:编号从0开始,属于数值索引.索引可支持使用自定义的格式,而不仅是数值格 ...

  5. Shell 编程 数组

    本篇主要写一些shell脚本数组的使用. 数组定义 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名 ...

  6. 我们一起来学Shell - shell的数组

    文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...

  7. Shell 之数组 [转]

    本文也即<Learning the bash Shell>3rd Edition的第六章Command-Line Options and Typed varilables之读书笔记之三,但 ...

  8. shell中数组讲解

    定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: 代码如下: 数组名=(值1 值2 ... 值n) 例如: 代码如下: array_ ...

  9. [ SHELL编程 ] 数组、关联数组和awk数组

    本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...

随机推荐

  1. 技术解析:锁屏绕过,三星Galaxy系列手机也能“被”呼出电话

    近期,由两位安全研究人员,Roberto Paleari及Aristide Fattori,发布了关于三星Galaxy手机设备安全漏洞的技术细节.据称,Galaxy手机可在锁屏状态下被未授权的第三方人 ...

  2. 使用Qemu调试内核

    利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...

  3. 作业2-浅谈数组求和java实验

              这次作业呢,我是用java来写的,虽然java只是自己假期里看的一点点,但是人总是要接触新事物的,应该不断向前.          说明:这次作业有一个遗憾,就是我花了一个下午真真 ...

  4. ios oc ui 路径和颜色设置--崩溃解决方案

    - (id)init{ self = [super init]; if (self) { _lineColor = CGColorCreateCopy([UIColor whiteColor].CGC ...

  5. Dynamic支持CollectionView布局 、 MotionEffects特效 、 BlurImage效果 、 TextKit

    1 使用UIDynamicAnimator对集合视图进行布局 1.1 问题 UIKit Dynamic动力模型一个非常有趣的用途就是影响集合视图的布局,可以给集合视图的布局添加各种动力行为,使其产生丰 ...

  6. 特性节点Attribute

    深入理解DOM节点类型第六篇——特性节点Attribute document.getElementById('b_results').attributes[0].textContent documen ...

  7. fn

    var avalon = function (el) { return new avalon.init(el) } avalon.init = function (el) { this[0] = th ...

  8. 添加mongodb支持

    最近花了些时间,将引擎的存储换成了mongodb. 私下,我觉得现有的存储机制极为落后.现在写数据的操作交由单独的进程完成,该进程兼当数据缓冲与持续化数据的责任.此次引擎的更换,只是简单的利用mong ...

  9. C# 扩展方法 总结

    扩展方法是静态方法,它是类的一部分,但实际上没有放在类的源代码中. 设计一个Money类 public class Money { private decimal amount; public dec ...

  10. JS基础知识(基本类型 引用类型)

    1,js中的  基本类型 引用类型  javascript中有两种变量类型:基本类型和引用类型,基本类型包括:Number.String.Undefined.Null.Boolean这五种,而引用类型 ...