Élégant, l'utilisation de tableaux dans ksh

Je suis en train de construire une sorte de jeu de propriétés en ksh.

La pensée de la façon la plus simple de le faire a l'aide de tableaux, mais la syntaxe est en train de me tuer.

Ce que je veux, c'est

  1. Construire un tableau de taille arbitraire dans un fichier de config avec un nom et une propriété.
  2. Itération pour chaque élément dans la liste et d'obtenir cette propriété.

J'théorie de ce que je souhaite que je pourrais faire quelque chose comme

MONITORINGSYS={
    SYS1={NAME="GENERATOR" MONITORFUNC="getGeneratorStatus"}
    SYS2={NAME="COOLER" MONITORFUNC="getCoolerStatus"}
}

Puis, plus tard, être en mesure de faire quelque chose comme:

for CURSYS in $MONITORINGSYS
do
    CSYSNAME=$CURSYS.NAME
    CSYSFUNC=$CURSYS.MONITORFUNC

    REPORT="$REPORT\n$CSYSNAME"

    CSYSSTATUS=CSYSFUNC $(date)
    REPORT="$REPORT\t$CSYSSTATUS"
done
echo $REPORT

Bien, qui n'est pas réel de la programmation, mais j'imagine que vous avez obtenu le point..

Comment dois-je faire?

[MODIFIER]

Je ne veux pas dire que je veux utiliser des tableaux associatifs. Je ne mets cette façon de faire à ma question plus clair... I. e. Il ne serait pas un problème si la boucle était quelque chose comme:

for CURSYS in $MONITORINGSYS
do
    CSYSNAME=${CURSYS[0]}
    CSYSFUNC=${CURSYS[1]}

    REPORT="$REPORT\n$CSYSNAME"

    CSYSSTATUS=CSYSFUNC $(date)
    REPORT="$REPORT\t$CSYSSTATUS"
done
echo $REPORT

Est de même pour le fichier de config.. je suis à la recherche d'une syntaxe qui rend peu lisible.

acclamations

  • Pas en ksh. ksh les tableaux sont basée sur des entiers uniquement, au moins pour le ksh implémentations, j'ai accès. Je suis sûr que vous pourriez hack quelque chose ensemble avec des chaînes, vous pouvez l'analyser, mais si vous voulez des tableaux associatifs, de choisir une langue avec des tableaux associatifs.
  • C'est certainement faisable avec un post ksh88m versions. Désolé je n'ai pas de temps pour vous donner un exemple en ce moment. Regarder kornshell.com, obtenir le UWIN version. set -A myArr vous permettra de commencer. J'ai vu des rapports sur la UWIN liste de personnes ayant des méga-octets variables, plus complexe que ce que vous décrivez. Bonne chance.
  • Merci, mais les tableaux ne doivent pas être associative. J'ai seulement expliqué de cette façon à la rendre clair.. je ne me dérangerait pas d'accès permet de dire CSYSNAME=CURSYS [0] et CSYSFUNC=CURSYS [1] dans la boucle.
InformationsquelleAutor filippo | 2011-07-27