变量:存储单个元素的内存空间。

数组:存储多个元素的连续的内存空间。

  数组名:整个数组只有一个名字;

  数组索引:编号从0开始;

    数组名[索引];

    引用数组中的某个元素:${ ARRAY_NAME [ INDEX ] }

      注意:引用变量值必须加上花括号{ }。

声明数组:

  declare -a ARRAY_NAME:声明索引数组。

  declare -A ARRAY_NAME:声明关联数组。

数组中元素的赋值方式:

  (1)一次只赋值一个元素;

    ARRAY_NAME[INDEX]=value

  (2)一次赋值全部元素;

    ARRAY_NAME=("VAL1"  "VAL2"  "VAL3" .....)

     注意: 元素与元素之间使用空格字符隔开

  (3)只赋值特定元素;这种称之为稀疏格式的数组。

    ARRAY_NAME=([0]="VAL1"  [3]="VAL3"  ........)

  (4)read也可以给数组赋值

    read -a ARRAY_NAME

演示:

如何引用数组?

引用数组中的元素:${ARRAY_NAME[INDEX]}

  注意:引用时,只给数组名,表示引用下标为0的元素;

引用数组中的所有元素:${ARRAY_NAME[*]}或者${ARRAY_NAME[@]}

求数组的长度(数组中元素的个数):${#ARRAY_NAME[@]}或者${#ARRAY_NAME[*]}

案列1:生成10个随机数,并找出其中最大值和最小值

#!/bin/bash
#
declare -a rand
declare -i max=
for i in {..};do
rand[$i]=$RANDOM
echo "rand[$i]: ${rand[$i]}"
[ ${rand[$i]} -gt $max ] && max=${rand[$i]}
done
echo "max: $max"

查看一下结果:

案例2:定义一个数组,数组中的元素是var/log/目录下所有以.log结尾的文件的名称;统计其下标为偶数的文件中的行数之和;

[root@ELK-chaofeng test]# cat test10.log
#!/bin/bash
declare -a files
files=(/var/log/*.log) declare -i lines=0 for i in $(seq 0 $[${#files[@]}-1]);do
if [ $[$i%2] -eq 0 ];then
let lines+=$(wc -l ${files[$i]} | cut -d' ' -f1)
fi
done
echo "Lines: $lines"
[root@ELK-chaofeng test]#

查看一下结果:

数组元素切片:${ARRAY_NAME[@]:offset:number}

  offset:要路过的元素个数;

  number:要取出的元素个数,省略number时,表示取偏移量之后的所有元素;

演示:

向非稀疏格式数组中追加元素:

  ARRAY_NAME[${#ARRAY_NAME[*]}]=

删除数组中的某元素:

  unset ARRAY_NAME[INDEX]

关联数组:

  declare -A ARRAY_NAME

    ARRAY_NAME=([index_name1]="value1"  [index_name1]="value2"  .....)

shell脚本之数组的更多相关文章

  1. Shell脚本学习-数组

    跟着RUNOOB网站的教程学习的笔记 Shell数组 数组中可以存放多个值,Bash Shell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与PHP类似). 与大部分编程语言类似,数 ...

  2. shell脚本中数组array常用技巧学习实践

    shell中数组的下标默认是从0开始的 1.将字符串放在数组中,获取其长度 #!/bin/bashstr="a b --n d"array=($str)length=${#arra ...

  3. Linux Shell脚本编程-数组和字符串处理

    数组  1.数组的定义及声明 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名:整个数组只有一个名字 索引:编号从0开始,属于数值索引:bash的数组支持 ...

  4. shell脚本编程数组

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

  5. Shell脚本(四)数组

    平时写脚本还没有用到过数组,暂时先记录下用法. #!/bin/bash array1=( ) array1_length=${#array1[@]} echo "array1 length: ...

  6. Linux 命令详解(十)Shell脚本的数组详解

    1.数组定义 [root@bastion-IDC ~]# a=( ) [root@bastion-IDC ~]# echo $a 一对括号表示是数组,数组元素用“空格”符号分割开. 2.数组读取与赋值 ...

  7. Linux shell脚本中 数组的声明:

    数组的声明: 1)array[key]=value # array[0]=one,array[1]=two 复制代码 2)declare -a array # array被当作数组名 复制代码 3)a ...

  8. shell 脚本获取数组字符串长度

    #!/bin/sh source /etc/init.d/functions funOne() { array=(I am dfh kjlhfjksdf sdfj jdkfhaskl mjjoldfu ...

  9. shell脚本之数组基本操作及排序

    数组的基本操作及排序 1.数组定义方法: ( 6 7 9 4 3 2) 0 1 2 3 4 5 #下标号 方法一: 数组名=(value0 value1 value2 -) 方法二: 数组名=([0] ...

随机推荐

  1. GNum试用体验

    只需在GNum上注册一个用户名,填上自己的电话号码,它就会自动生成一个URL,你的朋友(可以不注册GNum)在浏览器上进入这个 URL,就可以给你的手机打电话,目前可以免费通话200分钟,而且如果你邀 ...

  2. salesforce lightning零基础学习(八) Aura Js 浅谈一: Component篇

    我们在开发lightning的时候,常常会在controller.js中写 component.get('v.label'), component.set('v.label','xxValue'); ...

  3. Enumerable转换为DataTable

    今天在项目组公共类库中发现一个 Enumerable类型转换为DataTable,写的挺精简的,拿出来跟大家共享一下. using System; using System.Collections.G ...

  4. solr单机部署tomcat

    所需软件:solr4.8.1.Tomcat7 下载完相应软件后开始单机部署(windows下) 在F盘根目录创建solr文件夹,并解压solr4.8和tomcat7到该文件夹 在F盘根目录创建solr ...

  5. SQL 数据库加字段声明

    ALTER TABLE dbo.C_TrainPlan ADD MailCost DATETIME EXECUTE sp_addextendedproperty N'MS_Description', ...

  6. 解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题

    这段时间写Android和IOS服务时 sql数据库查询有数据正常,没数据总是报异常:System.Data.SqlClient.SqlException (0x80131904): Timeout ...

  7. 多啦爱梦~多啦A梦CSS3测试源代码

    先直接看图片,感觉一下!一直以来,我们都在说浏览器对CSS3支持度这个问题.可是,鉴于知识认识水平问题,又没几个人真正了解CSS3是什么东西,和它在网站显示上的重要性.现在好了,日本某位大神写了个CS ...

  8. CentOS 7 安装 .Net Core 2.0 详细步骤

    轰轰烈烈的Core 热潮,从部署环境开始.参照了网上不少前辈的教程,也遇到不少的坑,这边做个完整的笔记. 一.构建.Net core 2的应用程web发布,因为是用来测试centos上的core 环境 ...

  9. mysql查询语句,通过limit来限制查询的行数。

    mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...

  10. Python 实现的 12306抢票脚本

    Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤:- 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等).- 建立模拟浏览器 ...