bash - 在 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]}"
它应该返回“卡罗拉”。但相反,它返回:“奔驰”
解决方案
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" )
推荐阅读
- c++ - 为什么我的 c++ 代码在使用堆栈时以退出代码 11 结束?
- android - 工具:showIn="navigation_view" 不适用于制作菜单
- typescript - Typescript - 将 UnionType 的一个元素传递给函数,但不能同时传递两者
- python - 连接到 Postgres 数据库时出现 Apache Web 服务器分段错误错误
- sql - SSAS 表格模型 - 使用 DAX 查找值创建角色以查找多个列
- kubernetes - Kubernetes (EKS) 和 Airflow 中的有限 pod
- python - 如何从密集的熊猫数据框中制作完整的矩阵
- typescript - 为什么要进行类型检查?
- ruby-on-rails - 如果我从不同的工作人员创建类的实例,是否会应用变量缓存?
- android - RxJava2 调用链