迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Bash 关联数组

作者:迹忆客 最近更新:2023/05/16 浏览次数:

本篇文章介绍如何在 Bash 中创建关联数组。


Bash 关联数组

数组在 Bash 中可以很好地用于存储数据,并且在 Bash 中也可以创建带有字符串索引的数组,这称为关联数组。 关联数组是在 Bash 4 中加入的,之前的版本不能声明。

首先,检查 Bash 的版本,因为如果版本小于 4,则无法声明关联数组。 我们使用 declare 命令来声明一个关联数组。

按照以下步骤声明关联数组:

  • 首先,检查 Bash 的版本,然后运行以下命令:
    bash --version
    
    上面的命令将检查 Bash 的版本。 输出是:
    GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2019 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    
  • 现在使用 declare 命令声明一个关联数组:
    declare -A DemoArray
    DemoArray[One]=Jiyik1
    DemoArray[Two]=Jiyik2
    DemoArray[Three]=Jiyik3
    DemoArray[Four]=Jiyik4
    DemoArray[Five]=Jiyik5
    DemoArray[Six]=Jiyik6
    
    上面的命令会先声明一个关联数组,然后分配索引和值。
  • 此外,还有另一个命令,我们可以在一行中声明一个关联数组:
    declare -A DemoArray1=( [One]=Jiyik1 [Two]=Jiyik2 [Three]=Jiyik3 )
    
    上面的命令将在一行中创建一个关联数组。

访问关联数组

我们可以单独访问关联数组的元素,也可以使用数组。 我们可以直接回显它们或将数组放入循环中。

查看命令以单独访问值:

echo ${DemoArray[One]}
echo ${DemoArray[Two]}
echo ${DemoArray[Three]}
echo ${DemoArray[Four]}
echo ${DemoArray[Five]}
echo ${DemoArray[Six]}

上面的命令将在给定索引上打印关联数组的值。 查看输出:

Jiyik1
Jiyik2
Jiyik3
Jiyik4
Jiyik5
Jiyik6

我们还可以使用循环访问关联数组的所有值。 看命令:

for ArrayKey in "${!DemoArray[@]}"; do echo $ArrayKey; done
echo "${!DemoArray[@]}"

这里 ! 可用于读取关联数组的键。 第一个命令将逐个打印关联数组的键,第二个命令将一次打印所有键。

查看输出:

Four
Six
One
Five
Two

Three Four Six One Five Two

同样,要打印该值,我们将删除! 来自上述命令的运算符:

for ArrayValue in "${DemoArray[@]}"; do echo $ArrayValue; done
echo "${DemoArray[@]}"

现在,这些命令将打印给定关联数组的所有值。 查看输出:

Jiyik4
Jiyik6
Jiyik1
Jiyik5
Jiyik2

Jiyik3 Jiyik4 Jiyik6 Jiyik1 Jiyik5 Jiyik2

最后,我们可以使用 for 循环打印带有值的键。 看命令:

for ArrayKey in "${!DemoArray[@]}"; do echo "$ArrayKey => ${DemoArray[$ArrayKey]}"; done

上面的命令打印给定数组的所有键值对。 查看输出:

Three => Jiyik3
Four => Jiyik4
Six => Jiyik6
One => Jiyik1
Five => Jiyik5
Two => Jiyik2

向关联数组添加新成员

向关联数组添加新元素是一项非常简单的操作。 我们在数组和新键值对之间使用 += 连接运算符。

我们创建一个键值对,然后将其分配给我们的关联数组。 看命令:

echo "${DemoArray[@]}"
DemoArray+=([Seven]=Jiyik7)
echo "${DemoArray[@]}"

上面的命令将打印原始数组,添加一个新成员,然后打印修改后的数组。 查看输出

Jiyik3 Jiyik4 Jiyik6 Jiyik1 Jiyik5 Jiyik2

Jiyik3 Jiyik4 Jiyik7 Jiyik6 Jiyik1 Jiyik5 Jiyik2

从关联数组中删除成员

删除关联数组的成员也是一个简单的操作。 我们对数组成员使用 unset 命令,该成员将从数组中删除。

请参阅命令。

echo "${DemoArray[@]}"
unset DemoArray[Seven]
echo "${DemoArray[@]}"

上面的命令会先显示原来的数组,然后删除数组的成员[Seven],然后再次显示修改后的数组。 查看输出:

Jiyik3 Jiyik4 Jiyik7 Jiyik6 Jiyik1 Jiyik5 Jiyik2

Jiyik3 Jiyik4 Jiyik6 Jiyik1 Jiyik5 Jiyik2

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便