bash脚本编程之数组及随机变量

变量:用来存储存在值的内存空间;特点是一个变量中仅能存储一个数值。

数组:能够容纳多个数组元素的连续的内存空间;包括两种类型:1.稀疏数组(bash属于稀疏数组):在数组中的元素编号可以没有顺序;2.稠密数组:在数组中的元素必须按照顺序编号排列。

数组元素:数组中任何一个存放数据的存储单元,其作用相当于一个变量;

元素的标识有两种:索引数组标识:利用数字编号的方式,所有的数组元素都是使用数字编号的;

通常数字编号从零开始,即:0,1,2……

关联数组标识:所有的数组元素都是可以使用名称或者字符串来标识;(在bash4.0以上的版本才有可能支持关联数组

数组的声明和定义:用declare命令来、直接使用变量赋值或分别定义数组元素来声明和定义数组。

1.declare命令:

常用选项:

-a:声明索引数组,将其后的变量名称声明为索引数组,如果支持的话(bash4.0以上的版本有可能);

-A:声明关联数组,将其后的变量名称声明为关联数组,如果支持的话(bash4.0以上的版本有可能);

例子:

定义稠密数组:

declare -a NAMES=("zhang" "wang" "liu" "li")

定义稀疏数组:

declare -a NAMES2=([0]='zhangsan' [2]='cl' [3]='mayun')

2.直接使用变量赋值的方式:

定义稠密的索引数组:

ARRAY_NAME=("value1" "value2" "value3" ...)

定义稀疏的索引数组:

ARRAY_NAME=([0]="value1" [1]="value2" [2]"value3" ...)

定义关联数组:

ARRAY_NAME=([Index_name1]="value1" [Index_name3]="value2" [Index_name3]="value3" ...)

3.分别定义数组元素:

ARRAY_NAME[0]='value1'

ARRAY_NAME[1]='value2'

...

ARRAY_NAME[N-1]='value(N)'

示例:

[[email protected] ~]# STUDENT_INFO[0]='xiaoma'

[[email protected] ~]# STUDENT_INFO[1]='22'

[[email protected] ~]# STUDENT_INFO[2]='xxxxxxxxxxxx'

[[email protected] ~]# echo ${STUDENT_INFO[1]}

22

引用数组元素的方式:

${ARRAY_NAME[INDEX]}

注意:如果在引用数组元素时没有给出具体的索引编号,则默认编号为0,即显示第一个数组元素的值;

引用整个数组中所有元素:

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

引用整个数组的所有元素的索引号:

${!ARRAY_NAME[*]} 或者 ${!ARRAY_NAME[@]}

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

${#ARRAY_NAME[*]} 或者 ${#ARRAY_NAME[@]}

整组切片:

${#ARRAY_NAME[*]:offset}

//显示包括offset数值所对应表示位置的元素及其后所有的元素;

${#ARRAY_NAME[*]:offset:number}

//显示包括offset数值所对应表示位置的元素及其后number个元素的值;

撤销数组:

unset ARRAY_NAME

//数组内的元素一同被撤销,失效;

RANDOM变量:

随机数变量:取出的随机数是0-32767之间的整数值;

从熵池中取随机数;

熵池:

/dev/random

两次敲击键盘的时间间隔;

两次IO的时间间隔;

/dev/urandom(伪熵池)

利用应用程序计算得到的随机数;

关于取随机数,我们不能一直在RANDOM中取随机数,无法得到原来已经得到过的数值,所以,我们可以用一个变量来定义随机数:例如VAR100=$RANDOM,             这样我们可以通过 echo $VAR100来得到原来得到过的重复的随机数值。

时间: 2024-10-28 21:07:50

bash脚本编程之数组及随机变量的相关文章

压缩工具及bash脚本编程

回顾: RAID: 不同的服务器配置起来他的借口可能配置起来有所不同,但是官方一般都提供响应的说明书,按照说明书进行配置就行.关键是理解RAID级别的机制的意义是什么 LVM: 其实是一个逻辑设备他存在的主要作用是提供卷管理操作,我们称之为"volume", 卷管理操作的目的主要是实现把一个或多个底层的物理设备给组织成一个逻辑设备,我们可以将底层的任何类型的块设备,包括我们常见的基本磁盘分区,或者甚至是RAID都OK,只要他们提供块级别的存储空间,但是考虑到任何单个硬件设备他们的边界都

bash脚本编程的语法知识点总结第二部分

bash脚本编程的语法知识点总结第二部分 承接第一部分进行总结分析 6.bash编程之交互编程 read -p"prompt" //提示 -ttimeout 给变量默认值 varName=${varName:-value} 如果varName不空,则返回varName的值:否则varName会使用value作为其值 使用read参数[-p]后,允许在[-p]后面跟一字符串,在字符串后面跟n个shell变量.n个shell变量用来接收从shell界面输入的字符串 [-p]用法:read

bash脚本编程进阶篇

bash脚本编程进阶篇   函数.数组.字符串操作 一.函数:脚本编程中的函数与我们数学中的函数有着根本区别.这里的函数主要是为了实现过程式编程代码重用的作用.比如一个用于计算数字的函数,当我们需要使用计算数字的时候,直接调用这个函数过来而不必每一次计算数字都要自己重新写一次.因此,函数的主要功能可以概括为:便于实现模块化编程:便于代码的重用:使程序简洁.我们定义函数,可以分两种两种结构. 第一种函数结构,用function声明一个函数,后跟函数名.函数体用花括号括起来.第二种结构是用函数名跟小

bash脚本编程详细剖析

bash脚本编程详细剖析          背景:bash脚本编程是Linux学习一个至关重要的部分,想完成一个脚本可能很简单:但是想让自己的脚本写的让人觉得心旷神怡实为不简单.bash是所有Linux发行版的几乎都有的,因此我们这里以bash脚本为例,讨论bash脚本的编写方法.对于bash脚本编程中一些比较重要的知识点,我这里也会给予案例演示. 一.脚本编程中前话: 我们都知道,bash脚本编程说白了就是命令的堆积.只不过这种堆积的方式不是杂乱无章的堆积,而是按照一定要求和格式的链接.这说明

Bash脚本编程总结

bash脚本编程之用户交互: read [option]- [name -]  -p 'PROMPT'  -t TIMEOUT bash -n /path/to/some_script  检测脚本中的语法错误 bash -x /path/to/some_script  调试执行 示例: #!/bin/bash   # Version: 0.0.1   # Author: mrlapulga   # Description: read testing   read -p "Enter a disk

高级Bash脚本编程指南

http://tldp.org/LDP/abs/html/ 高级Bash脚本编程指南对脚本语言艺术的深入探索 本教程不承担以前的脚本或编程知识,但进展迅速走向一个中级/高级水平的指令...一直偷偷在细小的UNIX®智慧和学识.它作为一本教科书,一本手册,自学,并作为一个参考和知识的来源,壳牌的脚本技术.练习和大量的评论实例请读者参与,在这样的前提下,真正学习脚本的唯一途径是编写脚本.这本书是适合课堂使用的一般介绍编程的概念.本文件被授予公共领域.没有版权! 奉献对于安妮塔,所有魔术的来源内容表第

bash脚本编程之条件判断、条件测试

脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME=value 设置变量赋值 如: set User=Centos unset VAR_NAME 撤消变量赋值 如: unset User=Centos ${VAR_NAME} 作用范围:当前shell进程: 局部变量 local VAR_NAME=value 设置变量赋值 unset VAR_NAM

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

《高级Bash脚本编程指南》十年来首次修订

新年伊始,开源慕课的知识库上线了.初期提供了<Linux命令大全/Bash 参考><高级Bash脚本编程指南>两个系列.其他资料正将陆续上线. 其中,<高级Bash脚本编程指南>对于Shell学习者来说,是一本神一样的书籍. 它的原作者是Mendel Cooper,英文名叫<Advanced Bash-Scripting Guide>发表在http://tldp.org/ 上,是一本免费的书籍. 有人说,学习Unix/Linux,有座山叫shell编程,你总