在zsh中传递hash作为参数

时间:2013-01-11 14:55:03

标签: zsh

将哈希传递给函数的正确/惯用方法是什么?

我有点打击这个,但我不确定这是多么干净或是否有任何陷阱。

typeset -A hash
hash=(a sometext b moretext)

foo hash

foo() {
  typeset -A mhash
  mhash=( ${(Pkv)1} )
}

P标志解释结果(在这种情况下,$ 1作为持有参数名称)。因为这导致只得到值而不是键,我用“kv”来获取键和值。

这是正确的方法,还是有另一种方式。顺便说一句,因为我在实际程序中传递数组和哈希,我不想使用“$ *”或“$ @”

1 个答案:

答案 0 :(得分:1)

我尝试了一点,我不确定除了在函数上使用$ @之外还有其他方法。

Re: Array as parameter - Zsh mailing list

这些问题的可能答案(以bash为导向):
How to pass an associative array as argument to a function in Bash?
Passing arrays as parameters in bash
Passing array to function of shell script

事实上,当你开始需要使用一个数组,或者更糟糕的是,在shell脚本中使用一个关联数组时,也许是时候切换到更强大的脚本语言了,比如perl或python。 如果你不为你做,那么从现在开始6个月或为你的继任者为你做。