Ich schreibe ein Shell-Skript mit ein paar Variablen, die vom Benutzer konfiguriert werden sollten. Es wird ein Installationsprogramm zum Herunterladen und Konfigurieren des Skripts geben, möglicherweise durch eine Reihe von Fragen. Das betreffende Skript richtet sich an andere Entwickler.
Dies kann auf verschiedene Arten implementiert werden:
Verwenden Sie Platzhalter im Skript selbst und
sed
ersetzen Sie diese während der Installation (in etwa so: /programming/415677/how-to-replace-placeholders-in-a-text-file )Vorteile: Alle Variablendefinitionen sind im Skript enthalten. Es ist einfach, das Skript manuell herunterzuladen und die Variablen für Benutzer zu konfigurieren, die einen Editor gegenüber dem Installationsprogramm bevorzugen.
Nachteile: Es ist schwierig, die Variablen über das Installationsprogramm neu zu konfigurieren, sobald sie vorhanden sind. Es sei denn, ich erstelle eine komplexere reguläre Ausdrucksweise, die fehleranfällig wäre.
Verwenden Sie eine Konfigurationsdatei , im Grunde ein anderes Shell-Skript mit Zuweisungen, und verwenden Sie diese
source
, um sie einzuschließen. (Und wahrscheinlich legen Sie es in~/.scriptname
? Das Hauptskript wird kopiert/usr/local/bin
)Vorteile: Es ist einfach, das Skript neu zu konfigurieren. Es könnte sogar ein Parameter aus dem Hauptskript hinzugefügt werden. (Funktioniert wahrscheinlich auch in der ersten Lösung, aber das Bearbeiten eines Skripts von sich aus klingt nicht nach einer sehr guten Idee.)
Nachteile: Das Skript ist jetzt von zwei Dateien abhängig und der Benutzer muss das Installationsprogramm ausführen, damit die Konfigurationsdatei erstellt wird. Dies kann behoben werden, indem automatisch eine Konfigurationsdatei generiert wird, falls keine vorhanden ist. Das Auffinden einer externen Konfigurationsdatei ist jedoch für Benutzer, die das Skript nur herunterladen, bearbeiten und fertigstellen möchten, noch umständlicher.
Außerdem einige Optionen, wie die Konfiguration nach der Installation vom Benutzer verwaltet werden soll:
Sie mögen
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webInteractive
$ myscript config
Geben Sie den Server-Hostnamen ein: example.org
Geben Sie den Pfad zum Proxy auf dem Server ein: / home / johndoe / proxy
Geben Sie den Pfad zum http-Verzeichnis auf dem Server ein: / home / johndoe / webgetopts with long options
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webEinfache
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Gibt es andere Möglichkeiten, dies zu tun, die Sie in Betracht ziehen würden?
Irgendwelche Best Practices, irgendetwas Elegantes?