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

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

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

  数组索引:编号从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. Json数据中同字段不同数据类型的解析

    当解析Json数据时,如果碰到同字段不同数据类型的情况,如何处理呢?比如: [ { "code": 1, "data": 33 }, { "code& ...

  2. Percona Toolkit mysql辅助利器

    1 PT介绍 Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在 ...

  3. Sphinx coreseek 3.2

    功能 中文的拆词索引 MySQL中like模糊查询.   >1>5>%可以用索引 配置 用编辑器打开 path 配置 改绝对路径 https://blog.csdn.net/u013 ...

  4. ssh采用expect实现自动输入密码登录、拷贝

    1. 引言 最近做了一个项目,需要频繁与另一台主机进行文件的传输:中间想到了很多方式:FTP.samba.curl等,但是还是感觉scp最好用. SCP使用教程可参阅:http://www.jb51. ...

  5. C# 类相同属性赋值

    做项目时偶尔B类赋值给A类,碰巧A和B类型很多属性字段名是一样的,或者只是大小写不一样,这是可以利用泛型,反射来写一个自动化赋值的方法. 下面方法不考虑大小写不一样的情况,如果要考虑,可以使用字符串方 ...

  6. Java的第6天,学习运算符

    提到运算符我们就会想起 加 减 乘 除: Java中的一些运算符:关系运算符.逻辑运算符.赋值运算符.和条件运算符: 其中算术运算符有:+ , - , * , \, % ,++, -- ; + , - ...

  7. Java-关于类

    java-关于类-成员初始化问题 成员初始化出现错误“    - Syntax error on token ";", , expected” java类不允许对成员进行操作,但可 ...

  8. Modular Inverse(zoj3609+欧几里德)

    Modular Inverse Time Limit: 2 Seconds      Memory Limit: 65536 KB The modular modular multiplicative ...

  9. ssr 之Nuxt.js

    ssr:server side rendering(服务端渲染),目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容 ...

  10. 【22】访问者模式(Visitor Pattern)

    一.引言 在这篇博文中,我将为大家分享我对访问者模式的理解. 二.访问者模式介绍 2.1 访问者模式的定义 访问者模式是封装一些施加于某种数据结构之上的操作.一旦这些操作需要修改的话,接受这个操作的数 ...