如何在非平凡的情况下使用复合变量,例如ksh中的函数参数?可能吗?您如何使此示例代码中的注释行起作用?
func(){
print ${1.a} #reference argument object members. output would be 'dog'
newObject=$1 #assign compound variable to new variable
echo ${newObject.a} ${newObject.b} #output would be 'dog cat'
}
obj=( a=dog b=cat )
func $obj #call function with compound argument
澄清:这不是bash中的关联数组。它是ksh中的复合变量(如对象)。
必须除尘ksh
蜘蛛网...
有几个步骤:
typeset -n
(或nameref
)以允许函数通过“本地”名称引用数组一个例子如下:
$ func(){
typeset -n newObject=${1}
echo ".${newObject.a}.${newObject.b}."
}
$ obj=( a=dog b=cat )
$ func obj
.dog.cat
这里是ksh fiddle