shell脚本之数组

摘要:
declare-AARRAY_NAME:声明关联数组。数组中元素的赋值方式:一次只赋值一个元素;ARRAY_NAME[INDEX]=value一次赋值全部元素;ARRAY_NAME=注意:元素与元素之间使用空格字符隔开只赋值特定元素;这种称之为稀疏格式的数组。/bin/bash#declare-aranddeclare-imax=0foriin{1..10};dorand[$i]=$RANDOMecho"rand[$i]:${rand[$i]}"[${rand[$i]}-gt$max]&&max=${rand[$i]}doneecho"max:$max"查看一下结果:案例2:定义一个数组,数组中的元素是var/log/目录下所有以.log结尾的文件的名称;统计其下标为偶数的文件中的行数之和;[root@ELK-chaofengtest]#cattest10.log#!

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

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

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

数组索引:编号从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

演示:

shell脚本之数组第1张

shell脚本之数组第2张

如何引用数组?

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

注意:引用时,只给数组名,表示引用下标为0的元素;

shell脚本之数组第3张

引用数组中的所有元素:${ARRAY_NAME[*]}或者${ARRAY_NAME[@]}

shell脚本之数组第4张

求数组的长度(数组中元素的个数):${#ARRAY_NAME[@]}或者${#ARRAY_NAME[*]}

shell脚本之数组第5张

案列1:生成10个随机数,并找出其中最大值和最小值

#!/bin/bash
#
declare -a rand
declare -i max=0
for i in {1..10};do
        rand[$i]=$RANDOM
        echo "rand[$i]: ${rand[$i]}"
        [ ${rand[$i]} -gt $max ] && max=${rand[$i]}
done
echo "max: $max"

查看一下结果:

shell脚本之数组第6张

案例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]# 

查看一下结果:

shell脚本之数组第7张

数组元素切片:${ARRAY_NAME[@]:offset:number}

offset:要路过的元素个数;

number:要取出的元素个数,省略number时,表示取偏移量之后的所有元素;

演示:

shell脚本之数组第8张

向非稀疏格式数组中追加元素:

ARRAY_NAME[${#ARRAY_NAME[*]}]=

删除数组中的某元素:

unset ARRAY_NAME[INDEX]

关联数组:

declare -A ARRAY_NAME

ARRAY_NAME=([index_name1]="value1" [index_name1]="value2" .....)

免责声明:文章转载自《shell脚本之数组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cocosCreator中Protobuf的简单使用C#探秘系列(十)WPF:打开文件选择器选择文件并保存下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

循序渐进Linux 2:Linux的常用命令及使用技巧

一、Shell   shell本身是一个以C语言编写的程序,是用户和操作系统内核之间通信的桥梁。shell既是一种命令解释程序,又是一种功能强大的解释型程序设计语言。shell解释用户输入的命令,提交到内核处理,最后返回结果给用户。 1. shell命令语法分析 command [option] -[arguments] 2. shell的通配符 bash...

Linux Shell系列教程之(七)Shell输出

本文是Linux Shell系列教程的第(七)篇,更多shell教程请看:Linux Shell系列教程 与其他语言一样,Shell中也有输出操作,而且在实际应用中也是非常重要的,今天就为大家介绍下Shell输出操作。 Shell echo命令 echo命令是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。 命令格式: echo arg 转...

linux下shell编程示例-获取进程id

今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo "第0个参数:$0"echo "第一个参数:$1"echo "当前子shell进程:$$" #pidarr=`ps x | awk '{print $1}'`pidarr=$(...

Spark_2:Spark 快速入门教程

本文转自:Spark 快速入门教程,主要介绍了spark的基本概念和交互式使用(Scala语言),不涉及在独立应用中使用spark、集群部署 1. Spark 是什么 Apache Spark 是个通用的集群计算框架,通过将大量数据集计算任务分配到多台计算机上,提供高效内存计算。Spark 正如其名,最大的特点就是快(Lightning-fast),可比...

报错:Exception: org.apache.sqoop.common.SqoopException Message: DRIVER_0002:Given job is already running

报错背景: 创建完成job之后,执行job的时候报错。 报错现象: Exception: org.apache.sqoop.common.SqoopException Message: CLIENT_0001:Server has returned exception Stack trace: at org.apache.sqoop.cl...

shell实现trim函数-去除字符串两侧的空格(包括tab,space键)

shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^s*//' totrim.txt |sed 's/s*$//'>trimed.txtsed 's/^s*//;s/s*$//' totrim.txt>trimed.txtsed -e 's/^s*//' -e 's/s*$//' totrim.txt...