Linux运维学习之数组

2107/9/15    周五



今天我给大家分享一波数组,那么数组是什么呢? 数组是存储多个元素的连续的内存空间,相当于多个变量的集合,数组包括数组名和索引,当我们新建了一个数组之后就可以使用其中的索引来搞一波事情,既然有索引有编号,数组又是连续的,那么无序的数组就叫做稀疏数组,而且我们的索引也可以支持自定义的格式,没有非要数值,123的去排序,但是这个功能只有bash4.0才可以支持,那问题来了,怎么查看我们的bash版本呢?

据我所知,我们的centos6,7都是bash4.0以上的,而centos5则不能支持bash,即为关联索引。

既然我们提到了变量,那我们肯定都知道,使用变量是需要提前定义的,那么我们的数组是怎么定义的呢?

declare -a ARRAY_NAME 数组
declare -A ARRAY_NAME 关联数组

注意:两者不可相互转换,而且当我们删除数组中的某元素--->导致稀疏格式

ARRAY_NAME=([idx_name1]=‘val1‘ [idx_name2]=‘val2‘...)
注意:关联数组必须先声明再调用

定义之后就是我们的数组赋值,赋值的时候分为四种

(1) 一次只赋值一个元素;
     ARRAY_NAME[INDEX]=VALUE
     weekdays[0]="Sunday"
    weekdays[4]="Thursday"
   (2) 一次赋值全部元素:
    ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
   (3) 只赋值特定元素:
    ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
   (4) 交互式数组值对赋值
    read -a ARRAY

既然可以赋值,那我们的查询就很easy了,使用declare -a

这些都没有什么好说的,我们就直接进入肉戏,引用数组,如果是我们的引用单个数组的某个元素,我们可以使用${ARRAY_NAME[INDEX]}注意:省略[INDEX]表示引用下标为0的元素

引用数组中的元素:
    数组切片: ${ARRAY[@]:offset:number}
    offset: 要跳过的元素个数
    number: 要取出的元素个数
    取偏移量之后的所有元素
    ${ARRAY[@]:offset}

向数组中追加一些元素:ARRAY[${#ARRAY[*]}]=value

俗话说的好,光说不练假把式,我们在下面有个小题,就当是我们课后的小扩展:

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

#!/bin/bash

declare -a rand

for ((i=0;i<10;i++));do

rand[$i]=$RANDOM

[ $i -eq 0 ] && max=${rand[$i]} && min=$min && continue

[ ${rand[$i]} -gt $max ] && max=${rand[$i]} && continue

[ ${rand[$i]} -lt $min ] && min=${rand[$i]}

done

echo "All rand are ${rand[@]}"

echo "Max is $max"

echo "Min is $min"

好了,今天的分享就到这,本周刚转战的51CTO,内容和时间都有些仓促,不足之处,请多多指教。

时间: 2024-11-19 21:42:29

Linux运维学习之数组的相关文章

Linux运维学习之 —— 搭建本地yum源

yum是RPM的前端工具,通过yum命令可以帮我们自动解决安装rpm包之间的依赖关系.下面是搭建本地yum仓库的步骤: 1.挂载光盘(光盘为CentOS-6.5-x86_64-bin-DVD2.iso)     mount /dev/cdrom1 /media ls一下/media这个目录,可以看到以下内容 2.创建本地文件夹,将Packages下的rpm包全部拷贝到本地文件夹     mount /dev/cdrom1 /media/     cp -r /media/Packages/* /

linux 运维学习

Linux 运维学习笔记(一) 一. 配置网卡 1. 通过root账户登录后,输入setup命令. 2. 选择第三项"网络配置" 3. 继续选择"网卡设置" 4. 选择第一张网卡 5. 因为已经选择使用DHCP获取IP地址,所以IP地址不需要配,但是可以配一下DNS,然后保存退出! 6. 重启网卡(有三种方法) (1).ifup eth0 (2).etc/init.d/network restart (3)service network restart 7. 配置网

Linux运维学习-4——2016年7月26日

格式说明: 操作 概念 命令 说明及举例 四 du -sh /sys 查看文件.文件夹大小 /sys/class/scsi_host/host2/scan 在线扫盘(新加硬盘执行这个命令后才能发现) stat /etc/issue 更详细的看数据 蓝色:目录绿色:可执行文件浅蓝色:链接文件红色:压缩文件 创建-h文件名的文件,删除?访问?绝对路径 -:常规文件d:目录l:链接文件b:块设备(比如硬盘,有缓存)c:字符设备(不真实存在,没缓存) p:管道文件 例: 命令1 | 命令2 命令1的输出

Linux运维学习-2——2016年7月21日

格式说明: 操作 概念 命令 说明及举例 二 internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot 重启 chvt 1-6 切换终端 init 3 关闭图形界面 init 5 打开图形界面 cp 复制 pwd 显示当前目录 lsblk 列出硬盘信息 id -u mg 查看用户ID,root为9,其他为普通用户,不加

Linux运维学习之——vim基础

linux下的vim文本编辑器的常用选项. vim(Visual interface Improved)是vi编辑器的增强版,体积小但是功能强大,是linux系统使用最频繁的文本编辑器,所以学好vim也是学好linux必不可少的技能! vim的命令格式: vim [options] [file ..] eg: [[email protected] ~]# vim hello.txt #用vim打开hello.txt文件 vim打开文件后的默认方式为编辑模式(也叫命令模式). 编辑模式(命令模式)

奔跑中的2015:Linux运维学习八大禁忌

随着Linux服务器在企业中的日益普及,高级Linux运维工程师岗位缺口也在递增.目前,为企业人才输送人才的各大院校,很少有开设Linux课程.我所了解和接触从事Linux运维工作同事和朋友多半是半路出家,很少有一出校门就去做Linux运维的相关工作.问其为何学习Linux因为技术?有的人说是兴趣所致,也有的人说是由于工作需要,可以说后者有点被迫无奈,但是痛并快乐着. Linux运维学习可以说"入门不易,深入更难",由于Linux系统主要是使用命令和脚本操作的特点:尤其多数Linux操

[ Linux运维学习 ] 路径及实战项目合集

我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. 如果你想从事Linux运维相关工作,那么你可以来实验楼,因为实验上有: [Linux运维技术路径]:一条学习路径,多个阶段.若干课程带你一步步成为Linux运维工程师: [Linux运维与Devops实战]:12周时间,带你0基础到运维工程师,涵盖Linux运维常用技术和DevOps相关技术: --

Linux运维学习路线,实用LINUX教程推荐学习收藏

Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与linux具有的良好特性是分不开的.Linux包含了UNIX的全部功能和特性.简单来说,linux具有以下主要特性:遵循GNU GPL,开放性,多任务,多用户,设备独立性,提供了丰富的网络功能,可靠的系统安全,良好的可移植性.下面给大家说说Linux运维学习路线,实用LINUX教程推荐大家学习收藏. 关于Linux运维学习很多人都有自己不同的理由,我们不妨来分析一下: Linux是免费的不用花一分钱,能够节约大笔的成本:Linux是开源

Linux运维学习笔记之一:运维的原则和学习方法

一直在用Linux,但从未系统学习过,从1月1日开始学习到7月16日结束,近七个月学习,让自已对Linux有了新的认识,老男孩老师的课真的不错,实战性很强.由于只能中午和晚上10点以后才有时间,所以所有的实验是在不同电脑上完成的,文中IP可能有点问题,但应该不会影响实验.同时,为了保证笔记的完整,在做笔记的时候,从网上也下载了些图片和内容. 第一章 运维的原则: 一.简单.易用.高效 二.修改前做备份 1.以便回滚 2.以便事后比对改过的内 三.最小化原则 1.安装系统最小化 2.开启服务最小化