伪造一个多维数组[重复]
Posted
技术标签:
【中文标题】伪造一个多维数组[重复]【英文标题】: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
?
【问题讨论】:
tldp.org/LDP/abs/html/arrays.html#TWODIM 【参考方案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
。以上是关于伪造一个多维数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章