将哈希传递给函数的正确/惯用方法是什么?
我有点打击这个,但我不确定这是多么干净或是否有任何陷阱。
typeset -A hash
hash=(a sometext b moretext)
foo hash
foo() {
typeset -A mhash
mhash=( ${(Pkv)1} )
}
P标志解释结果(在这种情况下,$ 1作为持有参数名称)。因为这导致只得到值而不是键,我用“kv”来获取键和值。
这是正确的方法,还是有另一种方式。顺便说一句,因为我在实际程序中传递数组和哈希,我不想使用“$ *”或“$ @”
答案 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个月或为你的继任者为你做。