Accéder à la variable efficacement à partir du script shell

J’ai un fichier de configuration ini, je dois créer un script shell en utilisant cette configuration. Quelle est la méthode la plus simple pour accéder à toutes les variables, Peut être utilisée efficacement à partir du script shell.

Puis-je utiliser un tableau ou quelque chose? En planifiant de trouver le nombre de crochets [], puis par awk, obtenez toutes les variables une par une. S’il vous plaît suggérer si un moyen plus simple pour efficacement

cat app.ini 

Sous la sortie de mon exemple de fichier de configuration. Peut être N non de blocs.

 [APP1] name=Application1 StatusScript=/home/status_APP1.sh startScript=/home/start_APP1.sh stopScript=/home/stop_APP1.sh restartScript=/home/restart.APP1.sh logdir=/log/APP1/ [APP2] name=Application2 StatusScript=/home/status_APP2.sh startScript=/home/start_APP2.sh stopScript=/home/stop_APP2.sh restartScript=/home/restart.APP2.sh logdir=/log/APP2/ . . . . . [APPN] name=ApplicationN StatusScript=/home/status_APPN.sh startScript=/home/start_APPN.sh stopScript=/home/stop_APPN.sh restartScript=/home/restart.APPN.sh logdir=/log/APPN 

/

Pensez à utiliser une bibliothèque comme bash-ini-parser https://github.com/albfan/bash-ini-parser . Il couvre de nombreuses nuances telles que l’indentation, les espaces blancs, les commentaires, etc.

L’exemple de votre cas peut ressembler à ceci:

  #!/bin/bash . bash-ini-parser cfg_parser app.ini cfg_section_APP1 echo $name cfg_section_APP2 echo $logdir cfg_section_APPN echo $logdir 

La ligne ci-dessous nous aide à localiser des valeurs particulières dans chaque section.

 sed -nr "/^\[APP1\]/ { :l /^name[ ]*=/ { s/.*=[ ]*//; p; q;}; n; bl;}" app.ini