【问题标题】:ASSOCIATIVE ARRAY VARIABLE Accessed By INDEX using BASH in Ubuntu在 Ubuntu 中使用 BASH 由 INDEX 访问的关联数组变量
【发布时间】:2021-12-18 05:22:36
【问题描述】:

我正在使用安装在 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]}"

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

【问题讨论】:

  • 使用-A 而不是-a,参见help declarearrays
  • 您的代码工作正常。请在新的终端中运行您的代码。

标签: bash ubuntu variables associative-array


【解决方案1】:

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" )

【讨论】:

  • 感谢@Glenn Jackman。虽然我观看的视频与我在上面发布的代码相同(除了“-A”,这是我这边的一个错字。)所以,教程中的那个人返回了“卡罗拉”。
猜你喜欢
  • 1970-01-01
  • 2022-07-21
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2023-03-27
  • 2016-04-04
相关资源
最近更新 更多