1. 数组:
        变量:存储单个元素的内存空间;
        数组:存储多个元素的连续的内存空间;
            数组名:整个数组只有一个名字;
            数组索引:编号从0开始;
                数组  名[索引],
                ${ARRAY_NAME[INDEX]}
                 
            注意:bash-4及之后的版本,支持自定义索引格式,而不仅仅是0,1,2,...数字格式;
                此类数组称之为“关联数组”
                 
2. 声明数组:
            declare  -a  NAME:声明索引数组;
            declare  -A  NAME:声明关联数组;
             
3. 数组中元素的赋值方式:
            (1) 一次只赋值一个元素;
                ARRAY_NAME[INDEX]=value
            (2) 一次赋值全部元素;
                ARRAY_NAME=("VAL1"  "VAL2"  "VAL3"  ...)
            (3) 只赋值特定元素;
                ARRAY_NAME=([0]="VAL1"  [3]="VAL4" ...)
                 
                注意:bash支持稀疏格式的数组;
            (4) read  -a  ARRAY_NAME
             
4. 引用数组中的元素:${ARRAY_NAME[INDEX]}
            注意:引用时,只给数组名,表示引用下标为0的元素;
             
5. 数组的长度(数组中元素的个数):
            ${#ARRAY_NAME[*]}
            ${#ARRAY_NAME[@]}
             
示例:生成10个随机数,并找出其中的最大值和最小值;
#!/bin/bash
#
declare -a rand
declare -i max=0 for i in {0..9}; do
rand[$i]=$RANDOM
echo ${rand[$i]}
[ ${rand[$i]} -gt $max ] && max=${rand[$i]}
done echo "MAX: $max"

  

练习:生成10个随机数,而后由小到大进行排序;

         
练习:定义一个数组,数组中的元素是/var/log目录下所有以.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."

  

6. 引用数组中的所有元素:
            ${ARRAY_NAME[*]}
            ${ARRAY_NAME[@]}
             
7. 数组元素切片: ${ARRAY_NAME[@]:offset:number}
                offset:要路过的元素个数;
                number:要取出的元素个数;省略number时,表示取偏移量之后的所有元素;
                 
8. 向非稀疏格式数组中追加元素:
            ARRAY_NAME[${#ARRAY_NAME[*]}]=
             
9. 删除数组中的某元素:
            unset  ARRAY[INDEX]
             
10. 关联数组:
            declare  -A  ARRAY_NAME
                ARRAY_NAME=([index_name1]="value1"  [index_name2]="value2" ...)

【Linux】【Shell】【Basic】数组的更多相关文章

  1. linux shell 中数组使用方法介绍

    linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  2. Linux shell之数组

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  3. linux shell 中数组的定义和for循环遍历的方法

    linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开.数组的下标从0开始. 1 获取下标为n的元素: variable[n] 而且不存在数 ...

  4. linux shell basic command

    Learning basic Linux commands Command Description $ ls This command is used to check the contents of ...

  5. Linux shell awk数组使用

    awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下:     abc[1]="xiaohong"     abc[2]="xiaolan" ...

  6. Linux Shell 中数组的语法及应用

    #!/bin/sh## 数组的声明与初始化方法# 先声明后赋值:declare -a arrayarray=(one two three) # 声明并初始化:array_1=(1 2 3 four) ...

  7. 转:linux shell 数组建立及使用技巧

    linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  8. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  10. linux shell 数组建立及使用技巧

    参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell在编程方面比windows 批处理强大太多 ...

随机推荐

  1. Linux usb 2. 协议分析

    文章目录 0. 背景 1. USB 协议传输格式 1.1 Packet 1.1.1 Token Packet 1.1.2 Data Packet 1.1.3 Handshake Packet 1.1. ...

  2. Part 39 AngularJS route change events

    In this video we will discuss1. Different events that are triggered when a route change occurs in an ...

  3. laravel DB 类库

    DB 类操作数据库    基本用法: DB::table('tableName'); 获取操作tableName 表        增加信息        对数据库中的某个表增加数据主要有两个函数可以 ...

  4. Spark 安装部署与快速上手

    Spark 介绍 核心概念 Spark 是 UC Berkeley AMP lab 开发的一个集群计算的框架,类似于 Hadoop,但有很多的区别. 最大的优化是让计算任务的中间结果可以存储在内存中, ...

  5. Android LayoutInflater(布局填充器)

    先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: LayoutInflater layou ...

  6. [atARC121E]Directed Tree

    令$b_{a_{i}}=i$,那么问题即要求$i$不是$b_{i}$的祖先,也即$b_{i}$不严格在$i$的子树中 显然$a_{i}$和$b_{i}$一一对应,因此我们不妨统计$b_{i}$的个数 ...

  7. [loj2473]秘密袭击

    容易发现答案即$\sum_{S}\sum_{u=1}^{W}[u\le val(S)]=\sum_{u=1}^{W}\sum_{S}[u\le val(S)]$,那么可以枚举权值$u$,并将点权$va ...

  8. 9.1 k8s pod版本更新流程及命令行实现升级与回滚

    1.创建 Deployment root@k8-deploy:~/k8s-yaml/controllers/deployments# vim nginx-deployment.yaml apiVers ...

  9. Stupid && 祖传Fortran代码救赎之路(编译Dll)

    Stupid && 祖传Fortran代码救赎之路(编译Dll) gfortran编译动态库 在Windows平台下,Intel Fortran安装过于庞大且费事(现在集成到OneAP ...

  10. java 装饰器模式实现代码

    目录 1.实现装饰器模式 1.1.公共接口 1.2.接口实现 1.3.装饰器 1.4.装饰构件 1.5.测试装饰器 上图展示的是io流中的一个装饰者模式的代码结构 1.实现装饰器模式 汽车厂生产汽车实 ...