2013-01-11 4 views
2

해시를 함수에 전달하는 올바른/멍청한 방법은 무엇입니까?zsh에서 매개 변수로 해시 패스 해시

나는 이런 종류의 공격을 받았지만 이것이 얼마나 깨끗한 지 또는 어떤 함정이 있는지 확실하지 않습니다.

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

foo hash 

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

P 플래그는 result (이 경우 $ 1이 매개 변수 이름을 가지고 있음)를 해석합니다. 키와 값만 가져 오는 결과가 나왔기 때문에 키와 값을 모두 얻으려면 "kv"를 사용했습니다.

올바른 방법입니까 아니면 다른 방법입니까? btw, 나는 실제 프로그램에서 배열과 해시를 전달하기 때문에 "$ *"또는 "$ @"를 사용하고 싶지 않다.

답변

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

, 당신은 배열, 또는 더 나쁜, 사용할 필요 시작 연관 배열을 쉘 스크립트에서 사용한다면 아마도 perl이나 python과 같은보다 강력한 스크립트 언어로 전환 할 차례입니다.
당신을 위해 그것을하지 않으면, 지금부터 6 개월 동안/당신의 후계자를 위해 그것을해라.