shell脚本编程之数组

数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的元素。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。

一、数组的表示方式

1、下标数组

下标必须为整数,格式:数组名[下标],下标默认从0开始。
shell支持稀疏数组,下标整数不需要连续。
声明方式:declare -a 数组名

2、关联数组

关联数组可以使用任意的字符串作为下标(不必是整数)来访问数组元素。bash4.0开始支持关联数组。
格式:数组名[任意字符串]
声明方式:declare -A 关联数组
另外,shell只支持一维数组,不支持多维数组。

二、数组的赋值

三、数组的访问

通过操作语法来实现对数组元素的访问。

语法格式有以下几种:

数组的长度:

${#ARRAY[*]}:显示元素个数;
${#ARRAY[@]}:显示元素个数;
${#ARRAY[#]}:第#个元素的字符个数;
${#ARRAY}:第0个元素的字符个数;

数组的元素:

${ARRAY[*]}:显示所有元素内容;
${ARRAY[@]}:显示所有元素内容;
${ARRAY[#]}:显示第#个元素;
${ARRAY}:显示第0个元素;

数组的键值:

$[!ARRAY[*]}:显示所有的键值;
$[!ARRAY[@]}:显示所有的键值。

实例:写一个脚本,生成10个随机数,保存至数组中,而后显示数组下标为偶数的元素:

四、从数组中挑选元素

如果想要从数组中取出某几个元素时,使用下标逐个查找比较麻烦,可以使用数组的偏移元素功能来简化操作。

语法格式:

${ARRAY[@]:offset:number}
offset:偏移元素个数;
number:取出的元素个数;

实例:数组off_array中有6个元素,假设我们想要取3月到5月这三个值:

五、数组复制

$@:每个参数是一个独立的串,建议使用;
$*:所有元素当做一个串。

实例:复制一个数组中下标为偶数的元素至新数组中:

六、从数组中删除元素

格式:unset 数组名[下标]

七、综合实例

生成10个随机数,并对这10个随机数进行排序。

(0)

相关推荐

  • Shell脚本数组用法小结

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

  • Linux shell数组循环的实例详解

    shell数组循环 测试shell数组,循环的例子: arr=("a" "b" "c") echo "所有的内容如下:"${arr[@]} echo "数组的长度:"${#arr[*]} for var in ${arr[@]} do echo "打印的内容:"$var done 输出的内容如下: 以上就是Linux shell数组循环的实例详解,如有疑问请留言或者到本站社区交流讨论,感

  • linux shell实现求一个多维数组中的最大和最小值

    同事发了一道shell题,是求一个多维数组中的最大和最小值 如文件 99file:   33      55      23      56      99 234     234     545     6546    34 11      43      534     33      75 43      34      76      756     33 343     890     77      667     55 我的实现之一: #! /bin/bash echo "the

  • linux Shell脚本里面把一个数组传递到awk内部进行处理

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

  • Shell 数组与关联数组详解及实例代码

    Shell 数组与关联数组 1.数组 1.1. 数组定义 一对圆括号表示数组,数组元素之间用空格符号分割 xiaosi@Qunar:~$ a=(1 2 3) xiaosi@Qunar:~$ echo $a 1 xiaosi@Qunar:~$ a=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo $a yoona 1.2. 数组长度,元素,赋值与删除 长度:用${#数组名[@或*]} 可以得到数组长度 xiao

  • Linux Shell脚本系列教程(六):数组和关联数组

    一.数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合.普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引.通常情况下,使用字符串做索引更容易被人们理解.Bash从4.0之后开始引入关联数组. 二.定义打印普通数组 数组的方法有如下几种: 复制代码 代码如下: #在一行上列出所有元素 array_var=(1 2 3 4 5 6) #以"索引-值"的形式一一列出 array_var[0]=&q

  • Linux在shell中自动生成1到100的数组方法(两种方法)

    之前自己在写shell脚本的时候,需要自动创建1-100的文本确不知道该如何去创建.百度一翻终于知道了创建的方法. 在shell脚本中创建1-100的方法很多,那我在这里主要就说两种容易理解且方便的方法: 第一种方法: for i in {1..100} do echo $i done 使用{1..100}这种方式简单明了,大家也可以在linux命令模式下直接:echo {1..100}看一下效果. 第二种方法: 使用seq函数 for i in `seq 1 100` do echo $i d

  • shell脚本编程之数组

    数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的元素.数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式. 一.数组的表示方式 1.下标数组 下标必须为整数,格式:数组名[下标],下标默认从0开始. shell支持稀疏数组,下标整数不需要连续. 声明方式:declare -a 数组名 2.关联数组 关联数组可以使用任意的字

  • Shell脚本编程中常用的数学运算实例

    这部分主要讨论数学相关的shell脚本编程. 加法运算 新建一个文件"Addition.sh",输入下面的内容并赋予其可执行的权限. 复制代码 代码如下: #!/bin/bash echo "Enter the First Number: " read a echo "Enter the Second Number: " read b x=$(expr "$a" + "$b") echo $a + $b =

  • Shell脚本编程30分钟入门(小结)

    什么是Shell脚本 Shell脚本(英语:Shell script),又称Shell命令稿.程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作.被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果.利用shell脚本可以进行系统管理,文件操作等. 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell

  • Linux Shell 脚本编程入门教程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

  • shell脚本字符串和数组的使用操作方法

    字符串 可以使用单引号和双引号定义字符串变量但是单引号中不支持变量解析 #! /bin/bash username="mayuan" str_1="hello ${username}" str_2='hello ${username}' echo $str_1 # hello mayuan echo $str_2 # hello ${username} 获取字符串的长度 #! /bin/bash username="mayuan" echo ${

  • shell脚本编程Makefile的使用

    目录 为什么要使用Makefile Makefile的编写 Make工作原理 Makefile的规则 为什么要使用Makefile 简单来说,当我们写一个稍微大一些项目的时候,如果我们要执行一个程序那得编译很多个文件并且还得链接起来,如果没有Makefile我们就得一个一个编译一个一个链接那真的是又臭又长(而且还会经常写错),而Makefile就能够很好的解决这个问题,所以说掌握好Makefile的编写是很有必要的 Makefile的编写 程序的编译和链接 使用C.C++编写可执行程序,首先要把

  • Linux Shell脚本编程初体验

    通常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并且自动化,我们可以使用shell脚本. 某些编程语言,像

  • Shell脚本编程之判断语句

    一.单分支if语句 格式:if 判断条件:then statement1 statement2 ... fi 二.双分支的if语句 格式:if 判断条件; then statement1 statement2 ... else statementN ... fi 使用一个以前用过的脚本来说明这个结构. 三.多分支if语句 格式:if 判断条件1:then statement1 ... elif 判断条件2; then statement2 ... elif 判断条件3; then stateme

  • Linux Shell脚本编程的注意事项

    一.常用技巧 复制代码 代码如下: ssh user@server bash < /path/to/local/script.sh#ssh到远程服务器执行一个脚本,此命令可以避免将脚本上传到远程服务器 ssh user@host cat /path/to/remotefile | diff /path/to/localfile -#比较远程文件和本地文件的差异 vim scp://username@host//path/to/somefile#vi一个远程文件 curl ifconfig.me#

  • shell脚本编程之循环语句学习笔记

    本篇博客很简单,看一下shell编程使用到的循环语句,包括for循环,while循环,until循环,for后边跟一个变量,然后是一个集合,将集合中的东西赋给这个变量,每次循环执行,这跟java中的foreach很像,while循环和if使用同样的条件判断,满足条件执行语句,until和while相反,不满足条件执行语句,是不是很简单啊,下面看一下代码吧. 复制代码 代码如下: #!/bin/sh #for循环最基本的用法 for var in "hello" "xiao t

随机推荐