首页 > 解决方案 > 在 Ubuntu 中使用 BASH 由 INDEX 访问的关联数组变量

问题描述

我正在使用安装在 Window 10 上的 Ubuntu 终端。我创建了 ASSOCIATIVE ARRAY VARIABLE 并在 Ubuntu 中使用 BASH 使用 INDEX 进行访问。

### 84) Create an ARRAY VARIABLE Accessed By Value

    declare -A car
    car[BMW]=i8
    car[TOYOTA]=Corolla
    car[Honda]=Civic
    car[Mercedes]=Benz

    echo "${car[TOYOTA]}"

它应该返回“卡罗拉”。但相反,它返回:“奔驰”

输出

标签: bashubuntuvariablesassociative-array

解决方案


declare -a创建一个数字索引数组。
declare -A创建一个关联数组。

数字索引数组将索引部分var[idx]=value放入算术上下文中。在算术上下文中,可以在没有“参数扩展语法”(即$)的情况下使用变量。未设置的变量使用零值。

所以,你在做什么

declare -a car # '-a' used to let this variable have assigned values below
car[BMW]=i8
car[TOYOTA]=Corolla
car[Honda]=Civic
car[Mercedes]=Benz

将每个值分配给数组的索引零。

declare -p是检查变量的便捷方法:

$ declare -p car
declare -a car=([0]="Benz")

declare -A相反,我们得到:

$ declare -p car
declare -A car=([Honda]="Civic" [TOYOTA]="Corolla" [BMW]="i8" [Mercedes]="Benz" )

推荐阅读