Redian新闻
>
Bash 基础知识系列 #5:在 Bash 中使用数组 | Linux 中国

Bash 基础知识系列 #5:在 Bash 中使用数组 | Linux 中国

科技
 
导读:本章将介绍如何在 Bash Shell 脚本中使用数组。学习添加元素、删除元素和获取数组长度。   
本文字数:1944,阅读时长大约:2分钟

本章将介绍如何在 Bash Shell 脚本中使用数组。学习添加元素、删除元素和获取数组长度。

在本系列的前面部分中,你了解了变量。变量中可以有单个值。

数组内部可以有多个值。当你必须一次处理多个变量时,这会使事情变得更容易。你不必将各个值存储在新变量中。

因此,不要像这样声明五个变量:

  1. distro1=Ubuntu
  2. distro2=Fedora
  3. distro3=SUSE
  4. distro4=Arch Linux
  5. distro5=Nix

你可以在单个数组中初始化它们所有:

  1. distros=(Ubuntu Fedora SUSE "Arch Linux" Nix)

与其他一些编程语言不同,你不使用逗号作为数组元素分隔符。

那挺好的。让我们看看如何访问数组元素。

在 Bash 中访问数组元素

使用索引(数组中的位置)访问数组元素。要访问索引 N 处的数组元素,请使用:

  1. ${array_name[N]}

💡 与大多数其他编程语言一样,Bash Shell 中的数组从索引 0 开始。这意味着第一个元素的索引为 0,第二个元素的索引为 1,第 n 个元素的索引为 n-1

因此,如果你想打印 SUSE,你将使用:

  1. echo ${distros[2]}

Example of accessing array elements in bash shell

🚧 ${ 之后或 } 之前不能有任何空格。你不能像 ${ array[n] } 那样使用它。

一次访问所有数组元素

假设你要打印数组的所有元素。

你可以一一使用 echo ${array[n]} 但这确实没有必要。有一个更好更简单的方法:

  1. ${array[*]}

这将为你提供所有数组元素。

Accessing all array elements at once in bash shell

在 Bash 中获取数组长度

如何知道数组中有多少个元素?有一个专门的方法 在 Bash 中获取数组长度🔗 linuxhandbook.com:443

  1. ${#array_name[@]}

就这么简单,对吧?

Get array length in bash

在 Bash 中添加数组元素

如果必须向数组添加其他元素,请使用 += 运算符 将元素追加到 Bash 中的现有数组🔗 linuxhandbook.com:443

  1. array_name+=("new_value")

这是一个例子:

Append new element to array

🚧 追加元素时使用 () 很重要。

你还可以使用索引将元素设置在任何位置。

  1. array_name[N]=new_value

但请记住使用正确的索引编号。 如果在现有索引上使用它,新值将替换该元素。

如果你使用“越界”索引,它仍会添加到最后一个元素之后。例如,如果数组长度为 6,并且你尝试在索引 9 处设置新值,则该值仍将作为最后一个元素添加到第 7 个位置(索引 6)。

删除数组元素

你可以使用 Shell 内置的 unset 通过提供索引号来删除数组元素:

  1. unset array_name[N]

这是一个示例,我删除了数组的第四个元素。

Delete array element in bash

你还可以通过 unset 来删除整个数组:

  1. unset array_name

💡 Bash 中没有严格的数据类型规则。你可以创建一个同时包含整数和字符串的数组。

🏋️ 练习时间

让我们练习一下你所学到的有关 Bash 数组的知识。

练习 1:创建一个 Bash 脚本,其中包含五个最佳 Linux 发行版的数组。全部打印出来。

现在,用 “Hannah Montanna Linux” 替换中间的选择。

练习 2:创建一个 Bash 脚本,该脚本接受用户提供的三个数字,然后以相反的顺序打印它们。

预期输出:

  1. Enter three numbers and press enter
  2. 12 23 44
  3. Numbers in reverse order are: 44 23 12

我希望你喜欢通过本系列学习 Bash Shell 脚本。在下一章中,你将学习如何使用 if-else。敬请关注。

(题图:MJ/09477e2f-2bf9-4fdf-bc1e-c894a068adf2)


via: https://itsfoss.com/bash-arrays/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1973.5 篇
|
贡献: 3555 天
2013-10-25
2023-07-20
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
你的旧电脑是 “过时” 了,还是使用 Linux 的机会? | Linux 中国Linux0基础入门,教你如何在Shell中使用正则表达式超越 Bash: 9 个不太知名的 Linux Shell 及其功能 | Linux 中国Bash 基础知识系列 #8:For、While 和 Until 循环 | Linux 中国Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国Bash 基础知识系列 #6:处理字符串操作 | Linux 中国算力网络基础知识(2023)Bash 基础知识系列 #2:在 Bash 中使用变量 | 技术在 Linux 中使用 cat 命令 | Linux 中国Arch Linux 下全面使用 Wayland 的配置指南 | Linux 中国使用 Linux 让旧电脑焕发新颜 | Linux 中国Bash 基础知识系列 #9:Bash 中的函数 | Linux 中国在 Linux 中使用 cd 命令 | Linux 中国在 Linux 文件系统中使用 attr 添加扩展属性 | Linux 中国Rust 基础系列 #7: 在 Rust 中使用循环 | Linux 中国存储系统基础知识全解(预告)为什么黑客更喜欢使用 Kali Linux? | Linux 中国Web 安全基础知识梳理(附PDF)雷达干扰的基础知识MOS管基础知识,快来收藏夹吃灰~长篇小说连载《此世,此生》第五十章六如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国在 Linux 中使用 cp 命令 | Linux 中国一文详解云计算基础知识Rust 基础系列 #4: Rust 中的数组和元组 | Linux 中国Bash 基础知识系列 #3:传递参数和接受用户输入 | Linux 中国一文详解信创基础知识Guiding Principles The Value of \'If It Ain\'t Broke, Don\'t FixLinux Shell 介绍:Bash、Zsh 和 Fish | Linux 中国为了你走遍草原 第十八章G7, immigrants【初中物理】初二、三物理基础知识分类汇编放牛Bash 基础知识系列 #7:If Else 语句 | Linux 中国终端基础:在 Linux 中复制文件和目录 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。