【发布时间】:2013-02-16 02:21:51
【问题描述】:
在zsh 中,我可以使用单个命令轻松转储关联数组的内容:
zsh% typeset -A foo
zsh% foo=(a 1 b 2)
zsh% typeset foo
foo=(a 1 b 2 )
然而,尽管搜索高低,我能找到的最好的是declare -p,其输出包含declare -A:
bash$ typeset -A foo
bash$ foo=([a]=1 [b]=2)
bash$ declare -p foo
declare -A foo='([a]="1" [b]="2" )'
有没有一种干净的方法来获得类似zsh 输出的东西(最好是foo=(a 1 b 2 ) 或foo='([a]="1" [b]="2" )'),最好不借助字符串操作?
【问题讨论】:
-
通过转储内容,您的意思是准确地打印
foo=(a 1 b 2 ),还是简单地从容器中打印pairs(key, value)? -
为什么包含declare命令的输出有问题?
-
@Rubens:对问题进行了澄清。
-
@glennjackman:这不是一个大问题,但
declare -A是多余的,并且最终会使调试输出变得混乱,因为我已经知道它是一个关联数组。
标签: bash associative-array zsh