Tableau comme structure de données en bash (fichier de configuration)?
J'ai écrit un script bash qui traiter plusieurs fichiers. Je souhaite maintenant ajouter le support d'un fichier de configuration. C'est mon voulait structure de données:
Array (
[0] => Array (
[name] => datset1
[path] => /var/lib/bliTool/ds1
[type] => cvs
)
[1] => Array (
[name] => datset2
[path] => /var/lib/bliTool/ds2
[type] => xml
)
[2] => Array (
[name] => datset3
[path] => /home/igor/test/ds3
[type] => cvs
)
)
T1 Est une structure de données possible à l'intérieur de bash? Existe-il d'autres recommandations? Rappelez-vous, ce doit être dans un fichier de config...
T2: je pense à propos d'un fichier de configuration par " set " comme
/etc/myApp/
/etc/myApp/myApp.conf
/etc/myApp/datasets.d/
/etc/myApp/datasets.d/ds1.conf
/etc/myApp/datasets.d/ds2.conf
/etc/myApp/datasets.d/dsN.conf
et chaque /etc/myApp/ensembles de données.d/dsN.conf fichier devrait ressembler à
name=The DS name
path=/the/path/to/the/ds/files
type=thetype
Que recommandez-vous? Est-il un moyen de faire tout en un seul fichier?
T3: je veux soutenir plusieurs valeurs de chemin par set. Je pourrais soutenir quelque chose comme
path="/first/path /second/path"
Mais je pense que je vais obtenir des problèmes avec des espaces, donc je devrait mettre en place un délimiteur comme
path="/first/path:/second/path"
de diviser la chaîne.
Ou est-il un meilleur moyen?
- Tu veux dire tldp.org/LDP/abs/html/arrays.html ?
- Oui, quelque chose comme ça. Puis-je mélanger des tableaux indexés avec des assoc tableaux en bash? Et qu'il sera adapté pour un fichier de configuration?
- Avez-vous considéré l'utilisation de Perl au lieu de cela?
- Il est possible, dans le sens que
bash
est Turing-complet. Vous ne voulez probablement pas à écrire ou à maintenir le code nécessaire pour le faire, cependant.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas imbriquer des données strutures en
bash
. Au mieux, vous pouvez stocker les noms de tableaux associatifs dans un tableau, et de sauter à travers indirection cerceaux pour y accéder.Pour la deuxième question, il est bien sûr possible de définir un format de fichier de configuration avec les sections, mais vous aurez besoin d'écrire un analyseur qui peut la traiter. D'autres langues ont généralement une bibliothèque à disposition pour analyser riche formats de fichiers de configuration.
Aussi loin que les chemins d'accès multiples par variable, bâton avec
:
. En théorie, tout séparateur peut être utilisé comme partie d'un nom de chemin d'accès du composant, et donc le délimiteur doit être cité si c'est une partie d'un chemin d'accès. Mais depuisPATH
utilise:
comme délimiteur, il y a une conscience historique qui:
n'est pas un grand caractère à utiliser dans un nom de chemin d'accès, et qu'il doit être indiqué dans laPATH
-comme les paramètres.Puis ce sera à votre application de processus de l'arrière-réduit
:
.Je suis venu dans une situation similaire et ma solution est d'utiliser différentes FI dans tout autre niveau, c'est en quelque sorte similaire à chepner de l'idée. Le code et l'échantillon peut être trouvé ici https://github.com/pppoe/Nested-Array-Bash/