Shell数组的使用
时间:2022-07-24
本文章向大家介绍Shell数组的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Shell在编程方面比 Windows 批处理强大很多,无论是在循环、运算。
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C
语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
简单的说,数组就是各种数据类型的元素按一定顺序排列的集合。
数组就是把个元素变量或数据用一个名字命名。然后用编号区分它们的变量的集合。这个名字称为数组名,编号称为数组下标。
数组的定义
在Shell中,用括号来表示数组,数组元素用空格
符号分割开。定义数组的一般形式为:
array_name=(value1 ... valuen)
示例:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
还可以单独定义数组的各个分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使用连续的下标,而且下标的范围没有限制。
读取数组
读取数组元素值的一般格式是:
${array_name[index]}
例如:
value2=${array_name[2]}
举个例子:
#!/bin/bash
NAME[0]="dog"
NAME[1]="deer"
NAME[2]="tiger"
NAME[3]="ant"
NAME[4]="fox"
echo "First Index Vaule: ${NAME[0]}"
echo "Second Index Value: ${NAME[1]}"
运行脚本,输出:
# ./test.sh
First Index Value: dog
Second Index Value: deer
使用@或*可以获取数组中的所有元素,例如:
${array_name[*]}
${array_name[@]}
举个例子:
#!/bin/bash
NAME[0]="dog"
NAME[1]="deer"
NAME[2]="tiger"
NAME[3]="ant"
NAME[4]="fox"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
运行脚本,输出:
# ./test.sh
First Method: dog deer tiger ant fox
Second Method: dog deer tiger ant fox
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
案例
比如我们检查elasticsearch索引创建的时候,如果利用shell脚本,利用数组是最为方便的:
#!/bin/bash
# Author: nock
export PATH=/usr/local/jdk1.8.0_25//bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
daytime=$(date "+%Y%m%d")data_name=(
phptopic
javatopic
jstopic
mobiletopic
dotnettopic
gotopic
)uuid_group=(
733a8447-5974-4e2a-ac1d-7bd037e967ef
0d307791-9483-4374-a078-5c41f8a7a015
6351f908-9697-41ad-a580-581e17a5e4cc
f9bcffcb-c7b5-49be-a9fa-d9fc46fb8b8a
ce73f2b8-60ab-471a-97bd-baf70495f0b7
2d5cf154-591a-4cb0-bf7f-c583c8f85bf7
)length=${#uuid_group[@]}for((i=0;i<${length};i++));do
curl -s -XGET 'http://192.168.1.38:9200/_cat/indices' |grep ${uuid_group[${i}]}_${daytime} > /dev/null
if [[ $? -ne 0 ]];then
echo "data-source: ${data_name[${i}]} not create es index"
# The alarm notifies the uncreated index type
fi
done
总结
上面简单介绍了Shell数组的使用,在Shell编程中巧妙的使用Shell数组,可以让工作更加得心应手。
- C/C++网络编程时注意的问题小结
- PHP防止SQL注入的方法
- HTML5离线缓存攻击测试
- IE的BHO通过IHTMLDocument2接口获得网页源代码
- 【C++】小心使用文件读写模式:回车('r') 换行('n')问题的一次纠结经历
- 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题
- SEED缓冲区溢出实验笔记
- HTTP严格安全传输(HTTP Strict Transport Security, HSTS)chromuim实现源码分析(一)
- Linux下ls命令显示符号链接权限为777的探索
- Django form表单
- Django ORM那些相关操作
- 使用mitmproxy嗅探双向认证ssl链接——嗅探AWS IoT SDK的mqtts
- Django中ORM介绍和字段及其参数
- 几个实现分页的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 编写高质量可维护的代码:数据建模
- 新版企业远程办公视频通话系统EasyRTC-SFU,如何解决用户登录信息更新不及时的问题?
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
- 33.Python字符串方法find以及与序列解包的技巧结合
- 代码审计从0到1 —— Centreon One-click To RCE
- 一文带你深扒ClassLoader内核,揭开它的神秘面纱!
- 小知识:OGG的TRANLOGOPTIONS MINEFROMACTIVEDG参数
- oracle转postgreSQL修改点
- 重学数据结构(三、队列)
- Jmeter系列(68)- BeanShell 内置变量 prev
- 聊聊java中的哪些Map:(六)ConcurrentHashMap源码分析
- 任意文件包含漏洞的绕过方式
- XXE实体注入漏洞详解
- ent orm笔记2---schema使用(下)
- 零基础Python教程043期 列表的增删改查,彻底学通序列基本操作