如何在 Bash 中创建和使用数组

2023-11-03

Bash 是一种流行的命令行界面,常用于 Linux 和基于 Unix 的系统。 Bash 的强大功能之一是能够使用数组。 Bash 数组提供了一种在单个变量中存储多个值的方法,从而可以轻松访问和操作这些值。在本教程中,我们将探索如何在 Bash 中使用数组,包括如何声明、初始化和操作数组。

在 Bash 中声明数组

要在 Bash 中声明数组,我们使用以下语法:

1
数组名=(value1 value2 ... valueN)

这里,array_name是数组的名称,value1,value2,...,valueN是我们要存储在数组中的值。例如,要声明一个名为 my_array 的具有三个值的数组,我们将使用以下命令:

1
my_array=(apple banana orange)

这将创建一个名为 my_array 的数组,其值为 apple、banana 和 Orange。

访问数组元素

我们可以通过使用方括号内的元素索引来访问数组的各个元素。数组的第一个元素的索引为 0。例如,要访问 my_array 数组的第一个元素,我们将使用以下命令:

1
echo ${my_array[0]}

这将输出苹果。同样,要访问 my_array 数组的第二个元素,我们将使用以下命令:

1
echo ${my_array[1]}

这将输出香蕉。

迭代数组

我们可以使用循环来遍历数组。用于此目的的一种常见循环结构是 for 循环。这是一个例子:

1
2
3
4
for fruit in “${my_array[@]}”
do
    echo $fruit
done

在这个例子中,我们使用 for 循环来遍历数组中的每个元素。my_array大批。这“${my_array[@]}”语法用于将数组元素扩展为单独的单词。然后使用 echo 命令将每个元素输出到控制台。

向数组添加元素

要将元素添加到数组中,我们可以使用以下语法:

1
数组名+=(新值)

例如,要将葡萄值添加到my_array数组,我们将使用以下命令:

1
my_array+=(grape)

这会将葡萄值添加到末尾my_array array.

将元素更新为数组

要更新数组元素,只需通过索引将任何新值分配给现有数组即可。让我们用葡萄来改变索引 2 处的当前数组元素。

1
my_array[2]=mango

查看新增后的数组元素:

1
2
3
echo ${测试数组[@]}
 
apple banana mango grapes

从数组中删除元素

要从数组中删除元素,我们可以使用 unset 命令。例如,要从 my_array 数组中删除第二个元素,我们将使用以下命令:

1
unset my_array[1]

这将从中删除第二个元素my_array数组,留下一个包含苹果、橙子和葡萄的数组。

结论

在本教程中,我们探索了如何在 Bash 中使用数组,包括如何声明、初始化和操作数组。通过了解如何在 Bash 中使用数组,我们可以使 Bash 脚本更加强大和高效。通过练习,您可以使用数组创建复杂的 Bash 脚本,这些脚本可以处理大量数据并对这些数据执行复杂的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bash 中创建和使用数组 的相关文章

  • 在 UNIX 时间戳 Shell/Bash 中将日期与时区转换

    我需要将日期从格式为 yyyy mm dd hh mm ss TZ 的字符串转换为 UNIX 时间 TZ 时区 到目前为止我所做的是将没有时区的 yyyy mm dd hh mm ss 格式的日期转换为时间戳 dateYMD 2019 2
  • 从 bash 脚本返回值

    我想创建一个返回值的 Bash 文件 意思是 在脚本 script a bash 中我有一定的计算 脚本 script b bash 会调用它 script a bash return 1 5 script b bash a value s
  • 远程 ssh 命令:第一个回显输出丢失

    我试图通过 ssh 1 liner 调用在远程机器上运行多个命令 方法是将它们指定为传递给 bash c 的分号分隔字符串 它适用于某些情况 但不适用于其他情况 看一下这个 Note the echo 1 output is lost ba
  • 如何正确使用 liquibase `searchPath` 选项来指示各自的资源文件夹?

    我正在尝试调用update的命令liquibase如下 liquibase update changelog file persistence src main resources changelog db changelog dev xm
  • Unix cURL POST 使用文件中的内容到特定变量

    我已经搜索过这个答案 但没有找到任何有效或完全符合我的问题的答案 使用 Unix cURL 我需要将键 值对发布到服务器 密钥将是 MACs 换行符分隔的 MAC 地址文件的内容将是此 POST 的 VALUE 我试过了 curl d fi
  • bash 别名中允许使用哪些字符[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我最近添加了 alias cd alias cd alias cd 到我的 bash aliases 文件 玩弄这个 我注意到在别名时 被
  • 模拟用户输入以使用不同参数多次调用脚本

    我必须使用提供的脚本 该脚本在脚本运行时接受用户输入而不是参数 我无法解决这个问题 脚本的一个例子是 bin bash echo param one read one doSomething echo param two read two
  • 如何替换带引号的多单词字符串作为参数?

    我正在尝试替换包含多个带引号的单词的字符串变量作为命令的参数 因此 给出以下示例脚本 请注意 shebang 中的 x 这会导致输出被记录到 stderr bin bash x myArg hello world echo string i
  • 将 sudo 与 Python 脚本结合使用

    我正在尝试编写一个小脚本来在每次执行脚本时安装 VirtualBox 共享文件夹 我想用Python 来做这件事 因为我正在尝试学习它来编写脚本 问题是我需要特权才能启动挂载命令 我可以将脚本作为 sudo 运行 但我更喜欢它自己创建 su
  • Bash 'printf' 相当于命令提示符?

    我希望在 Windows 命令提示符下将一些字符串输入通过管道传输到一个小型 C 程序 在 bash 中我可以使用 printf AAAAA x86 x08 x04 xed program 本质上 我需要一些东西来转义命令提示符中的那些十六
  • 使用 shell 脚本在 docker 容器内运行脚本

    我正在尝试创建一个 shell 脚本来设置 docker 容器 我的脚本文件如下所示 bin bash docker run t i p 5902 5902 name mycontainer privileged myImage new b
  • 在 makefile 中,当我在 bash 函数内部使用 if 语句时,它会抛出错误

    在 makefile 中 当我在 bash 函数内部使用 if 语句时 它会抛出错误 test foo if a a then echo 1 fi foo hello ERROR bin sh 1 未找到 或与一个 test foo if
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • 如何从 C 文件更改终端中的目录

    如何从 C 程序更改将在终端上生效的目录 实际上不要告诉 system 函数或 chdir 函数 这些仅适用于 C 中的进程或子 shell 假设我正在从 bash shell 执行一个 C 程序 其进程 ID 为 10223 那么 我可以
  • 如何使用 cron 作业运行 python 文件

    您好 我创建了一个 python 文件 例如file example py 该文件将输出 sensex 值 假设该文件在linux系统上的路径为 Desktop downloads file example py 我通常会运行该文件pyth
  • Linux shell 命令逐块读取/打印文件

    是否有一个标准的 Linux 命令可以用来逐块读取文件 例如 我有一个大小为 6kB 的文件 我想读取 打印第一个 1kB 然后是第二个 1kB 看来猫 头 尾在这种情况下不起作用 非常感谢 你可以这样做read n在循环中 while r
  • bash、zsh :声明 [*] (天哪)

    我正在使用具有以下语法的 bash 脚本 declare a THIS 这在 zsh 中似乎是非法的 我收到 未找到匹配项 THIS 错误 谁能帮我把它翻译成 zsh 吗 另外 什么是 语法是什么意思 我知道我们正在声明一个数组 但为什么要
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Bash - 如何将参数传递给通过标准输入读取的脚本

    我正在尝试从标准输入执行脚本并将参数传递给它 有办法做到吗 假设我有以下内容 cat script sh bash 我如何将参数传递给脚本 我不想这样做 bash script sh arguments 也不是这个 script sh ar
  • 从重定向到日志文件的程序输出中删除进度条

    我正在运行一个程序 它会输出进度条 我是这样做的 python train py tee train log The train log看起来像下面这样 这是1号线 Training 这是2号线 000 valid 100 2630 263

随机推荐

  • JVM 内存模型

    内存划分 java虚拟机按照运行时内存使用区域划分如图 区域 是否线程共享 是否会内存溢出 程序计数器 否 不会 java虚拟机栈 否 会 本地方法栈 否 会 堆 是 会 方法区 是 会 一 程序计数器 Program Counter Re
  • Qt中的 connect 函数

    1 connect 函数实现的是信号与槽的关联 注意 只有QO bject类及其派生的类才能使用信号和槽的机制 2 函数原型 static QMetaObject Connection connect const QObject sende
  • Qt中信号槽的连接方式

    Qt AutoConnection 如果信号发送者和接收者在同一线程 Qt DirectConnection被使用 否则Qt QueuedConnection被使用 Qt DirectConnection 信号发送 信号槽立刻执行 Qt Q
  • scheduler Unhealthy Get “http://127.0.0.1:10251/healthz“: dial tcp 127.0.0.1:10251: con

    解决方法 cd etc kubernetes manifest 然后将你的scheduler以及controll manager yaml中把port 0注释掉 containers command kube scheduler authe
  • gitlab如何创建用户并登录

    为了大家后期能方便创建用户和使用gitlab 先给大家设置为中文 设置为中文后保存然后刷新页面即可设置为中文 接下来教大家怎么创建git用户并进行登录 创建完用户后需要配置一次密码 配置完密码后退出用户测试进行新用户登录 这里用刚创建的新用
  • SpringBoot项目jar、war包启动解析

    一 jar包和war包的区别 1 1 war包 war包是Java Web应用程序的一种打包方式符合Servlet标准 它是Web Archive的缩写 主要用于存储Web应用程序相关的文件 包括Java类文件 JSP HTML CSS J
  • 动手实现Linux内核编译与安装

    Linux内核是一个用C语言写成的 符合POSIX标准的类Unix操作系统 内核是操作系统中最基本的一部分 提供了众多应用程序访问计算机硬件的机制 Linux内核的一大特点就是采用了整体式结构 有很多过程组成 每个过程都可以独立编译 其模块
  • C++ 好用的包管理工具--vcpkg

    背景 Windows 下开发 C C 程序 少不了编译开源的第三方库 使用这些库开发极大的方便了程序员 使得我们不必重复造轮子 由于开源库绝大部分都来源于 Linux 系统 将其移植到 Windows 的 VC 开发环境下编译比较复杂和麻烦
  • vite运行项目报错events.js:352 throw er; // Unhandled ‘error‘ event

    解决方法 运行命令 node node modules esbuild install js 启动项目 npm run dev
  • 图-文多模态,大模型,预训练

    参考老师的无敌课程 多模态任务是指需要同时处理两种或多种不同类型的数据 如图像 文本 音频等 的任务 例如 图像描述 image captioning 就是一种典型的多模态任务 它需要根据给定的图像生成相应的文本描述 多模态任务在人工智能领
  • 把url里的query参数转成对象格式

    const urlString http www xxx com name tom age 18 height 180 1 拿到 后的那部分 const queryString urlString split console log que
  • 详解10M/100M/1000M以太网接口物理层一致性测试

    以太网的起源与发展 1972年Metcalf与他在XeroxPARC的同事们 在研究如何将XeroxAltos工作站与其他XeroxAltos工作站 服务器以及激光打印机相互联网 他们成功地用一个网络实现了2 94Mb s的数据传输率的互联
  • Nginx 动静分离

    1 nginx 与 tomcat 处理静态资源区别 tomcat静态资源请求量为每秒1000次 则nginx静态资源请求量为每秒6000次 tomcat每秒的吞吐量为0 6M nginx的每秒吞吐量为3 6M 可以说 nginx处理静态资源
  • Python3 环境搭建介绍

    本章节我们将向大家介绍如何在本地搭建 Python3 开发环境 Python3 可应用于多平台包括 Windows Linux 和 Mac OS X Unix Solaris Linux FreeBSD AIX HP UX SunOS IR
  • 生成可执行程序四个步骤:预处理、编译、汇编、链接

    预处理 相当于根据预处理指令组装新的c c 程序 经过预处理 会产生一个没有头文件 都已经被展开了 宏定义 都已经替换了 没有条件编译指令 该屏蔽的都屏蔽掉了 没有特殊符号的输出文件 这个文件的含义同原本的文件无异 只是内容上有所不同 编译
  • 如何在 Apache 中启用或禁用 CGI 脚本

    通用网关接口 CGI 是一种标准协议 使 Web 服务器能够执行外部脚本并向 Web 客户端返回动态内容 Apache 是使用最广泛的 Web 服务器之一 它支持开箱即用的 CGI 脚本 在本文中 我们将解释如何在各种平台 包括 Ubunt
  • S3FS:在 Ubuntu 和 Debian 系统上安装 Amazon S3 存储桶

    Amazon S3 是一种高度可扩展且持久的对象存储服务 允许您从网络上的任何位置存储和检索任意数量的数据 S3FS 是 Amazon S3 的 FUSE 用户空间中的文件系统 接口 允许您将 Amazon S3 存储桶作为本地文件系统挂载
  • 如何在 CentOS/RHEL 8 上创建没有 Shell 访问权限的 SFTP 用户

    SFTP SSH 文件传输协议 是两个系统之间的安全文件传输协议 它通过 SSH 协议运行并共享相同的端口 22 本教程将帮助您在 CentOS 8 和 RedHat 8 系统上创建仅 SFTP 访问用户 无 ssh 访问权限 用户只能通过
  • 什么是MySQL?

    MySQL 是一个存储网站数据的数据库系统 它是一种 RDBMS 关系数据库管理系统 这意味着它将数据组织到表中 您可以使用 SQL 命令访问和更新数据 许多流行网站都使用 MySQL 包括 Facebook Twitter 和 YouTu
  • 如何在 Bash 中创建和使用数组

    Bash 是一种流行的命令行界面 常用于 Linux 和基于 Unix 的系统 Bash 的强大功能之一是能够使用数组 Bash 数组提供了一种在单个变量中存储多个值的方法 从而可以轻松访问和操作这些值 在本教程中 我们将探索如何在 Bas