shell 数组一般都是一维数组。

1. 数组的声明

  • declare -a arr
  • 该命令将声明一个数组arr,实际上不声明也可以直接定义数组。

2. 数组的初始化

  • arr=(1 2 3):该命令定义了一个数组,可以不指明长度。元素之间用空格隔开。
  • arr=([index1]=val1 [index2]=val2 ... [indexn]=valn):利用数组下表定义数组。
  • read -a array:从命令行中读入数组。

3. 数组信息的获取

  • ${arr[index]}:读取数组中下标为index的元素。
  • ${arr[@/*]}:读取arr的所有元素。@*都是所有的意思。
  • ${#arr[@/*]}arr中的元素个数,#代表数目。

4. 数组元素的更新

  • arr[index]=x:将下标为index的数组元素更新为x,如果index对应元素不存在,则在相应index位置添加元素x
  • arr=(x y .. z):将数组重新定义,覆盖原数组。

5. 数组的删除

  • unset arr:删除整个arr数组。
  • unset arr[index]:删除arr中下标为index的数组元素。

6. 数组切片

  • ${arr[@]:start:end}:将数组从下标为startend切片,返回值为字符串类型,元素之间以空格符分隔。
  • arr_new="(${arr[@]:start:end})":将数组切片后赋给新的数组变量,切片以后对返回字符串左右加上括号即构成了新的数组。

7. 数组元素替换

  • ${arr[@]/原元素x/替换元素y}:将数组中所有原元素x替换为替换元素y,返回一个新的替换后的数组,并不改变原值。
  • arr=${arr[@]/x/y}:替换元素后覆盖原数组,改变原数组。
  • arr_new=${arr[@]/x/y}:将修改后的数组赋给一个新数组,原数组内容不变。

8. 数组的遍历操作

  • for i in "${array[@]}"

    do

    #access each element as $i. . .

    done
  • for循环遍历数组。

9. 模拟二维数组

  • matrix[i][j]=array[n*i+j]:通过一维数组模拟二维数组,按行顺序存储。

参考博客:

  1. http://www.tecmint.com/working-with-arrays-in-linux-shell-scripting/
  2. http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

Linux Shell 数组的更多相关文章

  1. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  2. 转:linux shell 数组建立及使用技巧

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

  3. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...

  4. linux shell 数组建立及使用技巧

    参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell在编程方面比windows 批处理强大太多 ...

  5. linux shell 数组的使用

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

  6. linux shell数组

    from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不 ...

  7. linux shell数组赋值方法(常用)

    http://blog.csdn.net/shaobingj126/article/details/7395161 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... ...

  8. Linux shell —— 数组与关联数组

    使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_ ...

  9. Linux shell之数组

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

随机推荐

  1. MySQL自动化运维之用mysqldump和mysqlbinlog实现某一数据库的每周全备和每天差异备份,并添加到执行计划【热备】

    案例: 线上有一数据库,需要每周全备一次,每天差备一次[安全起见还是差备吧,不要增备,不要吝啬磁盘哦,而且差备恢复还很快] 1.每周对数据库hellodb做完全备份 crontab任务计划: * * ...

  2. jQuery学习之prop和attr的区别示例介绍

    1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...

  3. HTML5 中的 canvas 画布(二)

    绘制图片 一.绘制图片 context.drawImage()(即把图片放到canvas里) var image = new Image();  // 先创建图片对象 image.src = '图片的 ...

  4. C#中的LINQ

    从自己的印象笔记里面整理出来,排版欠佳.见谅!   1.LINQ: 语言集成查询(Language Integrated Query) 实例: var q=      from c in catego ...

  5. Cosmos —— Big Data at Microsoft

    1, 1,cosmos stores. Cosmos stores data as streams – a file-like structure Streams are split apart in ...

  6. java问题排查总结

    前些天发现:http://hellojava.info/这个站点,关于java问题排查分析总结线上故障总结其实是最有价值的,好的总结就是一个系统演进历史,是团队难得的积累沉淀. 花了不少时间看了下,顺 ...

  7. 卷积神经网络_(4)_caffe简介

    这里大致说一下caffe.caffe是伯里克利大学的贾杨清教授写的一个深度学习框架,使用C++编写的,但同时也提供python和matlab接口:组成部分主要有: (1)Blob:用来存储数据和梯度: ...

  8. c#反射机制

    一:反射的定义 审查元数据并收集关于它的类型信息的能力.元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等. Sys ...

  9. Mybatis 总结

    1.如何传递多个参数 mybatis中,如果接口有多个参数,那么在mapper.xml中,可以通过#{0,VARCHAR},#{1,VARCHAR}或#{param1,VARCHAR},#{param ...

  10. WebSocket介绍和一个简单的聊天室

    WebSocket是什么呢? WebSocket一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范, ...