当前位置: 首页 > news >正文

第二十九章 数组

第二十九章 数组

数组。所有编程语言中都少不了数组,Shell语言也不例外,只不过支持程度非常有限。即便如此,在解决某些编程问题时,数组也能发挥大作用。

什么是数组

数组是一种可以一次存放多个值的变量,其组织形式类似与表格。数组中的每个变量叫做元素,每个元素都含有数据。数组可以通过索引来访问。

大多数编程语言支持多维数组,Bash中的数组是一维的。在Bash 2中首次引入了对数组的支持,最初的UNIXShell程序sh并不支持数组。

创建数组

数组变量和其它Bash变量一样,在访问变量时会自动创建。例如:

a[1]=foo
echo ${a[1]}

程序运行结果如下:

在这里插入图片描述

本例中第一个命令是数组a的第一个元素被赋值foo。第二个命令显示了第一个元素的值,其中的花括号是为了避免Shell试图对数组元素名执行路径名扩展。

也可以使用declare命令创建数组:

declare -a a

通过-a选项,declare创建了数组a。


为数组赋值


为数组赋值有两种方法,单个值可以使用下列方法:
name[subscript]=value

其中name是数组名,subscript是一个大于或等于0的整数(或者算术表达式)。数组的第一个元素索引是0,而非1。value是赋给该元素的字符串或整数。

多个值可以使用下列方法:

name=(value1 value2 ...)

其中,name是数组名,value是依次赋给数组元素的一系列值。

例如:将一周中各天的缩写赋给数组days

在这里插入图片描述


也可以通过指定各个值的索引,将值赋给特定元素:

在这里插入图片描述

访问数组元素

通过编写一个检查指定目录中的文件修改时间的脚本Hour来演示

代码如下:

#!/bin/bash#hours: 对文件的修改时间进行计数usage () {echo "usage: ${0##*/} directory" >
http://www.dtcms.com/a/239036.html

相关文章:

  • [嵌入式AI从0开始到入土]18_Ascend C算子开发环境(S5赛季)
  • 【redis】线程IO模型
  • 探索数学的迷人谜题:考兰兹猜想与MATLAB演示
  • MyBatis中foreach集合用法详解
  • STM32H562----------串口通信(UART)
  • 大模型如何选型?嵌入模型如何选型?
  • (LeetCode 每日一题)386. 字典序排数(递归、深度优先搜索dfs || 递推)
  • 2.2.1 ASPICE的需求收集
  • k8s4部署
  • ESP12E/F 参数对比
  • (LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)
  • 设备驱动与文件系统:04 从生磁盘到文件
  • 软件测试—学习Day11
  • 经典算法:排序链表
  • 【第九篇】 SpringBoot测试补充篇
  • leetcode238-除自身以外数组的乘积
  • 权限一览表
  • AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法
  • 第三讲 Linux进程概念
  • java_dependencies_父子模块引入依赖关系
  • CompletableFuture+线程池使用案列
  • @Import原理与实战
  • 自定义protoc-gen-go生成Go结构体,统一字段命名与JSON标签风格
  • Go语言系统监控实战:gopsutil库全面解析与应用
  • 75Qt窗口_Qt窗口概览
  • Redis集群模式之主从复制模式(2)
  • 轻量级的Windows系统优化与个性化解决方案
  • 汽车车载软件平台化项目规模颗粒度选择的一些探讨
  • JS Day05
  • 幂等性的七大解决方案