Bash Shell之数组简介

Bash Shell之数组简介

 

一、数组基本概念

  数组是内存中的存储空间,连续的多个存储单元;bash中只支持一维数组,支持稀疏格式 ,参数个数没有限制。

二、数组基本语法格式

  1、声明一个数组

         declare -a array  其实不用声明,按数组方式直接赋值给变量即可

  2、表示方式:数组名+索引

       索引的表示方式:数字索引:a[index]。例如:a[0], a[1]
         bash 4.0
以后支持关联数组.declare -A指明是关联数组例如:a[hello], a[hi]
       
在引用是必须使用{}。例如${a[0]}

  3、数组赋值:

         一次对多个元素赋值。例如:a=(red blue yellow green)

                 按索引进行赋值。例如:a=([0]=green [3]=red [2]=blue [6]=yellow)

                 命令替换赋值。例如:logs=(/var/log/*.log)

                 用户输入赋值。例如:read -a c,赋值后用echo ${c[0]}查看

  4、数组访问

       echo ${#a[i]}获取这个数组中第i个小标的元素值

                echo ${#a[*]}echo ${#a[@]} :获取这个数组中数组元素的总个数。

  5、从数组中挑选元素

         ${ARRAY[@]}: 取出所有元素。例如:echo ${a[@]}           
                ${ARRAY[@]:offset:number}
。例如:echo ${a[@]:1:1}
                                    offset:
偏移的元素个数
                                    number: 取出的元素的个数 
                ${ARRAY[@]:offset}
:取出偏移量后的所有元素 。例如:echo ${a[@]:1}

6、向数组复制和追加元素:

                把数组中的个数当做该数组的下标。
                                  declare -a mylogs
                                  tmp=${#mylogs[@]}
                                  mylogs[$tmp]="dasd"
               
删除数组用的元素:unset a[i]   删除所有原始unset a[*] unset a[@]

         数组复制:b[$index]=${a[$i]}

三、实例解析:

         1、写一个脚本,生成10个随机数,保存至数组中;而后显示数组下标为偶数的元素(或者将偶数元素赋值给一个新的数组并显示);

           1.png

         2.png

         2 生成10个随机数,升序排序

         3.png

         4.png

         注意:在Bash Shell数组互换时要注意其格式;赋值给tempa[$i]的方式不一样;

         3、打印九九乘法表

         5.png

         6.png

         

原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4190

(0)
上一篇 2015-05-11 12:21
下一篇 2015-05-11 14:07

相关推荐

  • tcp socket文件句柄泄漏

    今天发现有台redis机器上出现socket个数告警,这是很奇怪的现象。因为一台redis服务器上就部署了几个redis实例,打开的端口应该是有限。 1、netstat显示的tcp连接数正常 netstat -n | awk '/^tcp/ {++state[$NF]} END …

    Linux干货 2016-04-13
  • ansible——自动化运维工具

    Ansible SSH-based configuration management, deployment, and task execution system 运维工具的分类: agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ssh服务完成管理,ansible, fab…

    Linux干货 2016-11-06
  • 软件包管理工具—yum命令总结

    描述: YUM: Yellowdog Update Modifier, rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,实现查询、安装、升级、删除等功能 说明: yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下) 文件服务器: ftp:// http://…

    Linux干货 2016-08-29
  • 第四周作业

    作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@cloud ~]# cp -R /etc/skel /home/tuser1 && chmod -R…

    Linux干货 2016-12-25
  • Linux基础知识(四)

    本文主要讲述:Linux上用户和组的基本管理,具体包括一下内容 1、复制/etc/skel目录到/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id…

    Linux干货 2016-10-16
  • Clonezilla(再升龙)系统备份还原使用

      实验一、单机Centos 系统利用Clonezilla手动备份和还原(VMware vSphere) 实验二、利用Clonezilla+DRBL网络备份和还原   一、简介 DRBL(Diskless Remote Boot in Linux)中文名“企鹅龙”,是基于GNU GPL协议授权下的开源项目,可以实现客户机的远程启动及多客户…

    Linux干货 2015-10-27