Shell中的数组操作

前言

近期在处理一个临时数据需求时,由于会用到埋点表的近一年的分区,一次性全量查询会产生18W+的mapper数,效率慢不说,而且影响集群的性能,故而采用shell的循环方式,把需要使用到的分区值放到一个数组,然后遍历数组中的每一个值,将查询的结果保存至一张分区表。本文先讲shell中的相关数组操作,For循环会放在下一篇。

定义数组

bash支持一维数组(不支持多维数组),并且没有限制数组的大小。数组的下标从0开始,下标可以是整数或者算数表达式,其值应大于或等于0.
在Shell中,用括号来表示数组,数组元素用“空格”符号分隔。定义数组的一般形式如下:

array=(v1 v2 v3 ...... vn)

还可以单独定义数组的各个分量:

array[0]=v0
array[1]=v1
array[n]=vn

可以使用不连续的下标,且下标的范围没有限制

读取数组

读取数组元素值的一般格式是,使用@或者*可以获取数组中的所有元素:

${array[index]}
${array[*]}
${array[@]}

例如:

#!/bin/bash
array[0]="I have "
array[1]="a happy "
array[2]="family"
echo ${array[0]}
echo ${array[1]}
echo ${array[*]}

获取数组的长度

获取数组长度及数组单个元素长度的方法如下:

#数组的长度
${#array[@]}
${#array[*]}
#获取单个元素的长度
${#array[index]}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,465评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,450评论 0 9
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,038评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,987评论 19 139
  • 《王六郎》断背河传说之五里,我否定了蒲松龄和王观正一起游般河,拿了宋琬诗题目做证据。 其实,比较王观正和蒲松龄的诗...
    觉史氏阅读 435评论 1 0