Pourquoi cela ne fonctionne-t-il pas ???ksh: affecter la sortie de la fonction à un tableau
#!/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}
Note: Je mis à jour le script ci-dessus pour print ${testvar.one}
de print $testvar
pour montrer plus précisément ce que je suis en train d'accomplir.
Je suis sûr que cela a déjà été demandé, mais je ne suis pas sûr de quoi rechercher et tout ce que j'ai essayé d'utiliser pour les mots-clés ne m'apporte pas de réponses qui se rapportent à mon problème.
version ksh:
linux: version sh (AT&T Research) 1993-12-28 s+
solaris: version sh (AT&T Research) 93s+ 2008-01-31
Mise à jour:
Donc, une autre question est, cela se déroulera dans ksh 93T + sans donner une erreur, mais il n'attribue pas le tableau correctement. Je voudrais j'attribuer un tableau à partir d'une fonction? J'ai essayé d'assigner le tableau comme ceci aussi:
typeset -A testvar=$(testfunc)
print ${testvar.one}
Mais cela aussi ne fonctionnait pas correctement.
EDIT
Alors qu'est-ce qui se passe ici?
typeset -A env=(one="motherload" two="vain")
print ${env.one}
print ${env.two}
Je pensais que c'était la façon dont vous avez défini les tableaux associatifs, peut-être ce que je cherchais à était vieux mais qui sait .... semble comportement étrange car cela imprime « motherload » et « vain »
quelle est votre version de ksh? – ghostdog74
Voir ma réponse modifiée. –
C'est ce qu'on appelle une variable composée. C'est semblable à une structure. Je clarifierai l'une des phrases de ma réponse. http://www.informit.com/articles/article.aspx?p=99035&seqNum=5 –