为什么没有这项工作???KSH:分配函数输出到阵列
#!/bin/ksh
# array testfunc()
function testfunc {
typeset -A env
env=(one="motherload")
print -r $env
return 0
}
testfunC# returns: (one=motherload)
typeset -A testvar # segfaults on linux, memfaults on solaris
testvar=$(testfunc) # segfaults on linux, memfaults on solaris
print ${testvar.one}
注:我从print $testvar
更新以上脚本print ${testvar.one}
更精确地显示出什么,我试图完成。
我相信这已经问过,但我不知道该怎么搜索的,我一直在试图用关键字都没有把我与我的问题的任何答案。
KSH版本:
linux: version sh (AT&T Research) 1993-12-28 s+
solaris: version sh (AT&T Research) 93s+ 2008-01-31
更新:
所以另外一个问题是,这将在KSH93吨+运行,而不给了一个错误,但是,它不分配阵列正确。我会去分配一个函数的数组吗?我试图像这样分配阵列:
typeset -A testvar=$(testfunc)
print ${testvar.one}
但这也没有正常工作。
编辑
所以这里发生了什么?
typeset -A env=(one="motherload" two="vain")
print ${env.one}
print ${env.two}
我认为这是你如何定义关联数组,也许我一直在寻找的是旧的,但谁知道....似乎很奇怪的行为,因为这打印出“motherload”和“虚荣”
什么是你的KSH版本? – ghostdog74 2010-03-20 00:34:43
请参阅我编辑的答案。 – 2010-03-22 20:46:58
这就是所谓的复合变量。它与结构相似。我会在我的答案中澄清其中一个句子。 http://www.informit.com/articles/article.aspx?p=99035&seqNum=5 – 2010-03-22 22:30:25