shell之数组
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之数组的更多相关文章
- 每天一个shell知识--数组
1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL ...
- Linux shell之数组
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
- linux shell 中数组使用方法介绍
linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...
- shell脚本-数组
shell脚本-数组 数组 变量:存储单个元素的内存空间. 数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 数组索引:编号从0开始,属于数值索引.索引可支持使用自定义的格式,而不仅是数值格 ...
- Shell 编程 数组
本篇主要写一些shell脚本数组的使用. 数组定义 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名 ...
- 我们一起来学Shell - shell的数组
文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...
- Shell 之数组 [转]
本文也即<Learning the bash Shell>3rd Edition的第六章Command-Line Options and Typed varilables之读书笔记之三,但 ...
- shell中数组讲解
定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: 代码如下: 数组名=(值1 值2 ... 值n) 例如: 代码如下: array_ ...
- [ SHELL编程 ] 数组、关联数组和awk数组
本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...
随机推荐
- php大力力 [006节]初步接触认识phpMyAdmin
phpMyAdmin 2015-08-22 php大力力006. 初步接触认识phpMyAdmin 以下是phpAdmin网络截图: 这是通过MAMP一键安装的. php中MyAdmin的使用-猿代码 ...
- 通过 itms-services 协议,发布或者分享 iOS 应用程序
导读:itms-services 协议常用于 iOS 企业应用的无线部署,这可在不使用 iTunes 的情况下将内部软件发布或者分享给用户. 一.前期准备资料: 1.应用程序 (.ipa) 文件(使用 ...
- HDU 4460
http://acm.hdu.edu.cn/showproblem.php?pid=4460 水题一道,oj时间卡的非常奇怪,把spfa的queue开成全局卡线过,别的全挂了,迪杰斯特拉的手写堆都超时 ...
- magento数据库备份导入还原
Magento数据库备份.移植终极解决方案+3 分类:Magento教程 标签:magento搬家.magento数据库备份.magento更换域名.magento移植 4,355人浏览 作为电子商务 ...
- 深入理解JavaScript闭包
Closure 闭包的定义1: <JavaScript高级程序设计>定义闭包:闭包是指有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式,就是在一个函数内部创建另一个函数. 然而 ...
- MySQL语句进行分组后的含有字段拼接方法
MySQL语句: SELECT GROUP_CONCAT(DISTINCT transaction_no) FROM `lm_wh_trans` GROUP BY staff_code; 如果tran ...
- cocos引擎v2.1版本android 编译问题解决办法 (cocos2d-x-3.4rc1)
下载了最新版的cocos v2.1.2beta,使用cocos.exe来创建项目,而且在最下方的附件功能里还勾选了“支持x86架构cpu”这个选项,导致使用build_native.py编译不通过,以 ...
- 大数据hadoop入门学习之集群环境搭建集合
目录: 1.基本工作准备 1.虚拟机准备 2.java 虚拟机-jdk环境配置 3.ssh无密码登录 2.hadoop的安装与配置 3.hbase安装与配置(集成安装zookeeper) 4.zook ...
- smartmontools的安装使用和实现对磁盘的Nagios监控
安装 首先从sourceforge下载最新的安装版本. 解压编译 $ tar -zxvf smartmontools-6.4.tar.gz $ cd smartmontools-6.4 $ ./con ...
- spring学习笔记---Jackson的使用和定制
前言: JAVA总是把实体对象(数据库/Nosql等)转换为POJO对象再处理, 虽然有各类框架予以强力支持. 但实体对象和POJO, 由于"饮食习惯", "民族特色 ...