2

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

我对此有所了解,但不确定这有多干净或是否有任何陷阱。

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

foo hash

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

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

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

4

1 回答 1

1

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

Re: 数组作为参数 - Zsh 邮件列表

这些问题的可能答案(面向 bash):
如何将关联数组作为参数传递给 Bash 中的函数?
在bash中将数组作为参数
传递将数组传递给shell脚本的函数

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

于 2013-01-15T14:41:59.053 回答