wie das Parsen einer Konfigurationsdatei (*.conf) in shell-Skript?
Ich bin neu in shell-Skript. Ich habe eine Datei app.conf
als :
[MySql]
user = root
password = root123
domain = localhost
database = db_name
port = 3306
[Logs]
level = logging.DEBUG
[Server]
port = 8080
Möchte ich diese Datei analysieren, shell-Skript und entpacken wollen mysql-Zugangsdaten vom gleichen. Wie kann ich das erreichen?
- Welche shell benutzt du? bash, ksh, /bin/sh ...?
- Hi @glennjackman, es ist
/bin/sh
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde dies tun:
Den
$()
setzt die variablepw
um die Ausgabe des Befehls innen. Der Befehl innen sieht durch Ihre app.conf-Datei für eine Linie, diepassword
und dann druckt das 3. Feld in dieser Zeile.BEARBEITET
Wenn Sie gehen, um zu analysieren, ein paar Werte aus deiner config-Datei, würde ich eine variable für die config-Datei-name:
Hier ist, wie zu tun, die zwei verschiedene Anschlüsse..., indem Sie ein flag auf 1, wenn Sie kommen auf der rechten Seite verlassen, wenn Sie den port.
user: not found
. Meine shell-Skript-Datei :#!/bin/sh user = $(awk '/^user/{print $3}' /root/app/config/app.conf)
var=value
und$n
gibt mir den N-TEN Teil durch ein Leerzeichen getrennt in eine Zeile ergänzt durch ein regex zur Verfügung gestellt awk. Auch$0
würde mir die gesamte Zeile, in der die übereinstimmung gefunden wurde.Mit awk:
=
mit optionalen Leerzeichen auf beiden Seiten. Einmal Feld getrennt sind, druckt er 2. Feld, wenn 1. Feld ist entwederuser
ODERpassword
Werden Sie wollen, um die Suche für die "shell-ini-Datei-parser". Ich würde anfangen mit etwas wie dieses:
Ich lief in ein ähnliches problem gestern auch und dachte, die beste Lösung wäre, wenn man ein assoziatives array wie "Schlüssel - Wert" nach dem Parsen der Datei.
Ich Sie gerne sehen, ein Beispiel haben Sie einen Blick auf https://github.com/philippkemmeter/set-resolution/blob/master/set-resolution.
Angepasst zu deinem problem, das könnte funktionieren:
So haben Sie Zugriff auf zum Beispiel Benutzer über
${CONF[user]}
.Die gsub ist trimmen Schlüssel und Werte, so dass Sie können verwenden Sie die tab-etc. so formatieren Sie Ihre config-Datei.
Es fehlt Abschnitte, aber Sie können diese Funktionalität mithilfe der sed zum erstellen einer config-array pro Abschnitt:
So, deine Frage zu beantworten insgesamt, dieses Skript funktionieren könnte:
Den anderen Abschnitten entsprechend.