博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本编程数组
阅读量:6243 次
发布时间:2019-06-22

本文共 1533 字,大约阅读时间需要 5 分钟。

数组:

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

数组:存储多个元素的连续的内存空间,相当于多个变量的集合

数组名和索引

索引:编号从0开始,属于数值索引

注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引, bash4.0版本之后开始支持

bash的数组支持稀疏格式(索引不连续)

声明数组: declare -a ARRAY_NAME:普通数组(声明可有可无)

declare -A ARRAY_NAME: 关联数组(必须先声明才可用

注意:两者不可相互转换

数组赋值

单个赋值:weekdays[0]="Sunday"

多个赋值:name=("mage" "zhangsir" "wang")

特定元素赋值:title=([0]="yuan[3]")

交互式赋值:read -a 

显示所有数组:declare -a

引用数组

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

注意:省略[INDEX]表示引用下标为0的元素

引用数组所有元素:

${ARRAY_NAME[*]} ${ARRAY_NAME[@]}

数组的长度(数组中元素的个数):

${#ARRAY_NAME[*]}

${#ARRAY_NAME[@]}

删除数组中的某元素:导致稀疏格式 unset ARRAY[INDEX]

删除整个数组: unset ARRAY

数组数据处理

引用数组中的元素:

数组切片:${ARRAY[@]:offset:number}

offset: 要跳过的元素个数

number: 要取出的元素个数

取偏移量之后的所有元素 ${ARRAY[@]:offset}

向数组中追加元素:

ARRAY[${#ARRAY[*]}]=value

关联数组:

declare -A ARRAY_NAME ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)

注意:关联数组必须先声明再调用

示例

生成10个随机数保存于数组中,并找出其最大值和最小值

#!/bin/bash declare -a randfor ((i=0;i<10;i++));do    rand[$i]=$RANDOM    if [ $i -eq 0 ];then        max=${rand[$i]}        min=$max    else        [ $max -lt ${rand[$i]} ] && { max=${rand[$i]};continue; }                [ $min -gt ${rand}[$i] ]  &&  min=${rand[$i]}    fidoneecho All rand is ${rand[*]}echo Max rand is $maxecho Min rand is $min

编写脚本,定义一个数组,数组中的元素是/var/log目录下所有以。log结尾的文件,统计出其下标为偶数的文件的行数之和。

#!/bin/bashdeclare -a filesfiles=(/var/log/*.log)declare -i lines=0for i in $(seq 0 $[${#files[*]}-1]); do   if [ $[$i%2] -eq 0 ];then    let lines+=$(wc -l ${files[$i]} | cut -d' ' -f1)   fidoneecho "Lines: $lines.

 

转载于:https://www.cnblogs.com/yaun1498078591/p/9026679.html

你可能感兴趣的文章
day23-python操作数据库三
查看>>
第二次冲刺——第3天
查看>>
SpringMVC+Hibernate+Junit4+json基本框架近乎0配置
查看>>
Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
查看>>
Hadoop学习笔记(九)HDFS架构分析
查看>>
DB2数据库常用基本操作命令
查看>>
RHEL5.8安装Sybase 15.7_x86_64
查看>>
函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例
查看>>
武汉科技大学ACM :1002: A+B for Input-Output Practice (II)
查看>>
extjs中form.reset(true)出现的bug修复
查看>>
Some Android functions
查看>>
ORB-SLAM2学习4 initializer.h
查看>>
正向代理和反向代理
查看>>
1092 回文字符串(LCSL_DP)
查看>>
day01-Python介绍,安装,idea
查看>>
AX函数,将EXCEL列号转为列名
查看>>
UNDO -- Concept
查看>>
养生《一》
查看>>
es6的模块化--AMD/CMD/commonJS/ES6
查看>>
DevStack部署Openstack环境
查看>>