【问题标题】:override of a 2D array cells in bash [duplicate]覆盖 bash 中的二维数组单元格 [重复]
【发布时间】:2016-11-24 09:02:35
【问题描述】:

我尝试在 bash 中设置以下二维数组:

$ a[0,0]=a0
$ a[1,0]=a1
$ echo ${a[0,0]}
a1

我希望得到a0,我错过了什么?

【问题讨论】:

  • 我不是 100% 确定这一点,但我认为 0,01,0 在算术上下文中被评估,所以你得到与 $((1,0))$((0,0)) 相同的结果即第一个数字被评估并丢弃,在这两种情况下都留下0。不过,我不知道您从哪里得到支持多维数组的想法。
  • Bash ONLY 提供一维索引和关联数组变量。虽然模拟多维数组有一些棘手的方法,但它们并不是一个好的解决方案。如果有机会,最好改用其他脚本语言,例如 Perl、Pyhton 甚至是支持多维数组的某些版本的 Ksh。

标签: arrays linux bash shell


【解决方案1】:

Bash 不支持多维数组,但您可以模拟二维数组,如 this answer 中所述

【讨论】:

    【解决方案2】:

    答案是添加

    declare -A a
    

    【讨论】:

    • 声明一个变量'-a'(数组)不提供多维支持。 Bash 仅支持一维数组。虽然模拟多维数组有一些棘手的方法,但它们并不是一个好的解决方案。
    • @MarcM 它对我有用
    • @MOHAMED:这不是一个真正的二维数组——它只是一个使用哈希模拟二维数组的黑客——完整的解释请参见this answer
    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多