2013-01-11 107 views
2

將散列傳遞給函數的正確/慣用方式是什麼?在zsh傳遞散列作爲參數

我有這種打擊,但我不知道這是多麼乾淨,或者如果有任何陷阱。

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

foo hash 

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

P標誌解釋結果(在本例中爲$ 1作爲參數名稱)。由於這導致只獲取值而不是密鑰,所以我將其鎖定在「kv」上以獲取密鑰和值。

這是正確的方式,還是有另一種方式。順便說一句,因爲我傳遞一個數組和哈希在我的實際程序中,我不想使用「$ *」或「$ @」

回答

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個月後,爲你的繼任者。