当前位置: 首页 > 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" >

相关文章:

  • [嵌入式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_父子模块引入依赖关系
  • 咖啡网站源码/中国十大营销策划机构
  • 包头网站设计推广/旺道seo推广有用吗
  • 数据库查询网站建设/搜狗搜索排名优化
  • 一区适合晚上一个人看b站/含有友情链接的网页
  • 自己做蛋糕有什么网站吗/网络营销产品的首选产品
  • b2b网站怎么做关键词优化/seo 优化教程