【问题标题】:Fake a multi-dimensional array [duplicate]伪造一个多维数组[重复]
【发布时间】:2013-09-18 01:31:48
【问题描述】:

由于 bash 不支持多维数组,我该如何伪造它以便可以像这样访问它:

#declare
array["foo"] = "bar"

#print
echo array["foo"] //how to display declared 'bar' here?

所以问题是:我需要做什么,在访问array["foo"] 时打印出bar

【问题讨论】:

标签: arrays bash multidimensional-array


【解决方案1】:

你只需要使用associative arrays:

declare -A array=()

#declare
array["foo"]="bar"

#print
echo "${array["foo"]}"

你可以用它来伪造多维数组

i=1
j=2
array[$i,$j]=1234
echo "${array[$i,$j]}"

【讨论】:

  • 它只适用于一个元素:declare -a array=(["moo"]="cow" ["john"]="doe") : echo "${array["moo"]}" //returns doe[!] which is wrong, echo "${array["john"]}" //returns doe aswell which is fine
  • 当我只做一个像echo ${array["moo"]}" 这样的回显时,它工作正常,但是当我想打印多个数组元素时会出现问题。
  • @Lucas 确保将您的数组声明为与 declare -A 而不是 -a 关联。
  • 这很奇怪 - 我使用了 -a 参数,因为当我这样做时 -A 这就是我得到的:declare: -A: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...] 我正在使用以下 bash:#!/usr/local/bin/bash
  • 我认为declare -A 在 4.0 及更高版本的 bash 中。我正在运行3.2.48
猜你喜欢
  • 1970-01-01
  • 2015-05-28
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2014-06-29
  • 1970-01-01
  • 2020-05-23
相关资源
最近更新 更多