shell脚本学习6——数组

原创 2016年08月30日 11:46:26
Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

定义数组

在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
    array_name=(value1 ... valuen)
例如:
  1. array_name=(value0 value1 value2 value3)
或者
  1. array_name=(
  2. value0
  3. value1
  4. value2
  5. value3
  6. )

还可以单独定义数组的各个分量:
  1. array_name[0]=value0
  2. array_name[1]=value1
  3. array_name[2]=value2
可以不使用连续的下标,而且下标的范围没有限制。

读取数组

读取数组元素值的一般格式是:
    ${array_name[index]}
例如:
  1. valuen=${array_name[2]}
举个例子:
  1. #!/bin/sh
  2. NAME[0]="Zara"
  3. NAME[1]="Qadir"
  4. NAME[2]="Mahnaz"
  5. NAME[3]="Ayan"
  6. NAME[4]="Daisy"
  7. echo "First Index: ${NAME[0]}"
  8. echo "Second Index: ${NAME[1]}"
运行脚本,输出:
$./test.sh
First Index: Zara
Second Index: Qadir
使用@ 或 * 可以获取数组中的所有元素,例如:
  1. ${array_name[*]}
  2. ${array_name[@]}
举个例子:
  1. #!/bin/sh
  2. NAME[0]="Zara"
  3. NAME[1]="Qadir"
  4. NAME[2]="Mahnaz"
  5. NAME[3]="Ayan"
  6. NAME[4]="Daisy"
  7. echo "First Method: ${NAME[*]}"
  8. echo "Second Method: ${NAME[@]}"
运行脚本,输出:
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:
  1. # 取得数组元素的个数
  2. length=${#array_name[@]}
  3. # 或者
  4. length=${#array_name[*]}
  5. # 取得数组单个元素的长度
  6. lengthn=${#array_name[n]}

应用机器学习(六):决策树

决策树决策树( decision tree )是一个树状图。其中,树里的每一个节点代表着对某一个属性的检验。例如,一次掷币试验出现正面还是反面。每一个分支代表一个检验的结果,每一个叶子节点代表一个类...
  • wong2016
  • wong2016
  • 2017年05月27日 19:41
  • 212

Linux学习总结(29)——CentOS 6和CentOS 7区别总结

centos7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,服务启动、开机启动文件、网络命令方面等等 1.系统初始化技术 Sysvin...
  • u012562943
  • u012562943
  • 2017年05月03日 10:18
  • 1394

C++深入体验之旅六:数组

1.数组的声明和初始化 我们知道,在程序设计中,大多数数据都是存放在变量里的。如果我们要处理较多的数据,增加存放数据的空间最简单的方法就是多开设一些变量。然而,变量多了就难以管理了。这就好像一个...
  • supersugar3126
  • supersugar3126
  • 2013年12月02日 10:29
  • 1883

ECMAScript 6学习笔记

ES6(ECMAScript 6)新版本JavaScript语言的标准,代号harmony。上一次标准的制订还是2009年出台的ES5。 目前想要运行ES6代码的话,可以用google/traceu...
  • wang8088498
  • wang8088498
  • 2016年04月04日 21:02
  • 984

【机器学习-斯坦福】学习笔记6 - 朴素贝叶斯

本次课程大纲: 1、 朴素贝叶斯 - 朴素贝叶斯事件模型 2、 神经网络(简要) 3、 支撑向量机(SVM)铺垫 – 最大间隔分类器...
  • maverick1990
  • maverick1990
  • 2013年11月14日 12:41
  • 4768

找出滑动窗口数组中的最大值

给定大小为N的数组。数组被分为大小为k的子数组。找到每个子数组的最大值。 子数组为滑动窗口。 如果数组为1 2 3 4 5 6 子数组为1 2. 2 3. 3 4. 4 5. 5 6. ...
  • f81892461
  • f81892461
  • 2013年05月21日 14:25
  • 2807

编程之美读书笔记2.14 - 子数组之和的最大值

问题: 1. 一个由N个整数元素的一维数组,求其所有子数组中元素和的最大值。 2. 如果数组首尾相邻,也就是允许子数组A[i],...,A[n-1],A[0],...,A[j]存在,求其所有子数组总元...
  • pipisorry
  • pipisorry
  • 2014年09月05日 17:30
  • 1349

(六十四)第四章编程练习

1.编写一个C++程序,如下述输出示例所示的那样请求并显示信息: What is your first name? Betty Sue What is your last name? Yewe Wha...
  • qq20004604
  • qq20004604
  • 2015年12月04日 18:09
  • 886

C#学习笔记 6 数组

现在开始系统的学习C#并好好做笔记  如有不足和错误请各位大大及时指出哦~(ノ・ω・)ノ゙ 有时候,需要存储多个数据,或者,需要存储多个类型相同的值,而为了每个值都要派一个变量给它。这样就很...
  • shirleycrow
  • shirleycrow
  • 2017年05月23日 09:17
  • 84

输入4个整数,按从大到小的顺序输出这4个整数

/* * 程序的版权和版本声明部分: * Copyright (c) 2014, XX大学,信院 * All rights reserved. * 文件名称:zx.cpp * ...
  • u012512525
  • u012512525
  • 2014年03月17日 19:59
  • 903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell脚本学习6——数组
举报原因:
原因补充:

(最多只允许输入30个字)