shell脚本之数组
变量:存储单个元素的内存空间。
数组:存储多个元素的连续的内存空间。
数组名:整个数组只有一个名字;
数组索引:编号从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脚本之数组的更多相关文章
- Shell脚本学习-数组
跟着RUNOOB网站的教程学习的笔记 Shell数组 数组中可以存放多个值,Bash Shell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与PHP类似). 与大部分编程语言类似,数 ...
- shell脚本中数组array常用技巧学习实践
shell中数组的下标默认是从0开始的 1.将字符串放在数组中,获取其长度 #!/bin/bashstr="a b --n d"array=($str)length=${#arra ...
- Linux Shell脚本编程-数组和字符串处理
数组 1.数组的定义及声明 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名:整个数组只有一个名字 索引:编号从0开始,属于数值索引:bash的数组支持 ...
- shell脚本编程数组
数组: 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为 ...
- Shell脚本(四)数组
平时写脚本还没有用到过数组,暂时先记录下用法. #!/bin/bash array1=( ) array1_length=${#array1[@]} echo "array1 length: ...
- Linux 命令详解(十)Shell脚本的数组详解
1.数组定义 [root@bastion-IDC ~]# a=( ) [root@bastion-IDC ~]# echo $a 一对括号表示是数组,数组元素用“空格”符号分割开. 2.数组读取与赋值 ...
- Linux shell脚本中 数组的声明:
数组的声明: 1)array[key]=value # array[0]=one,array[1]=two 复制代码 2)declare -a array # array被当作数组名 复制代码 3)a ...
- shell 脚本获取数组字符串长度
#!/bin/sh source /etc/init.d/functions funOne() { array=(I am dfh kjlhfjksdf sdfj jdkfhaskl mjjoldfu ...
- shell脚本之数组基本操作及排序
数组的基本操作及排序 1.数组定义方法: ( 6 7 9 4 3 2) 0 1 2 3 4 5 #下标号 方法一: 数组名=(value0 value1 value2 -) 方法二: 数组名=([0] ...
随机推荐
- Migrate from ASP.NET Core 2.0 to 2.1
http://www.talkingdotnet.com/migrate-existing-aspnet-core-2-application-aspnet-core-2-1/ https://doc ...
- redis 五种数据类型
前言 前面学会了单机, 学会了集群, 但是redis咋用啊? 或者说, redis支持哪些数据类型呢? 常用的有五种: String , Hash, List, Set, zset(SortedSet ...
- Kafka实战解惑
目录 一. kafka简介二. Kafka架构方案三. Kafka安装四. Kafka Client API 4.1 Producers API 4.2 Consumers API 4.3 消息高可靠 ...
- php中的heredoc和nowdoc对比
两者的不同就相当于php双引号和单引号的不同,双引号会解析里边的变量,而单引号不会 heredoc语法 <?php $a = 'cqh'; $str = <<<HTML hel ...
- 前端错误监控,sentry入门配置详细教程
一.前言 最近经理说要把公司项目结合sentry用起来,然后组长不想做,老员工也不想做,分配任务就这么分配给我了,很荣幸接锅,摸索了几天,了解了一些基本配置,深一点的玩法可能还得实践一段时间,这里对于 ...
- 几种好用的经典webshell(php)
php经典一句话: <?php echo shell_exec($_GET['cmd']);?> 中国菜刀:官网:www.maicaidao.co原理:上传一句话(<?php @ev ...
- JAVAEmail工具错误java.lang.ClassNotFoundException: javax.activation.DataSource
JDK9以上或JDK6以下使用mail.jar包不加JAF的activation.jar包会抛出该错误!JDK6以上不需要加该jar包: 参考原文 https://stackoverflow.com/ ...
- VB.NET语法小结
本人精通C#编程,VB没有开发经验,项目维护需要,特意整理了下VB语法,进行恶补.编程思想都是互通的,都是微软生的,语言大同小异. Imports System 一.(1)定义一个变量,并且初始化. ...
- vue-cli脚手架搭建项目简单入门一
搭建系统: Windows系统 简单了解Node.js.npm,安装Node.js,下载网址:http://nodejs.cn/download/ 查看node,npm安装成功与否.打开cmd命令行, ...
- IIS服务器SSL证书安装
在证书控制台下载IIS版本证书,下载到本地的是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt是证书文件的密码. 友情提示: 每次下载都会产生新密码,该密码仅匹配本 ...