Sto scrivendo uno script di shell con alcune variabili che dovrebbero essere configurate dall'utente. Ci sarà un programma di installazione per scaricare e configurare lo script, possibilmente facendo una serie di domande. Lo script in questione è rivolto ad altri sviluppatori.
Questo può essere implementato in diversi modi:
-
Usa segnaposto nello script stesso e usa
sed
per sostituirli durante l'installazione (qualcosa di simile a questo: link )-
Pro: tutte le definizioni di variabili sono contenute nello script. È facile scaricare lo script manualmente e configurare le variabili per gli utenti che preferiscono un editor tramite il programma di installazione.
-
Contro: È difficile riconfigurare le variabili tramite il programma di installazione una volta che sono a posto. A meno che non crei una regexp più complessa che potrebbe essere soggetta a errori.
-
-
Utilizza un file di configurazione , fondamentalmente un altro script di shell con assegnazioni e usa
source
per includerlo. (E probabilmente inseriscilo in~/.scriptname
? Lo script principale è copiato in/usr/local/bin
)-
Pro: è facile riconfigurare lo script. Potrebbe anche aggiungere un parametro per farlo dallo script principale (Probabilmente avrebbe funzionato anche nella prima soluzione, ma la modifica di uno script da sola non sembra un'ottima idea)
-
Contro: lo script ora dipende da due file e all'utente è richiesto di eseguire il programma di installazione per il file di configurazione da creare. Questo può essere risolto generando automaticamente un file di configurazione se non esiste. Tuttavia, l'individuazione di un file di configurazione esterno sarà ancora più complicata per gli utenti che desiderano semplicemente scaricare lo script, modificarlo e utilizzarlo.
-
Inoltre, alcune opzioni su come la configurazione deve essere gestita dall'utente dopo l'installazione:
-
come $ myscript config server.host esempio.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / web
-
Interattivo
$ myscript config
Immettere il nome host del server: example.org
Immettere il percorso del proxy sul server: / home / johndoe / proxy
Immettere il percorso della directory http sul server: / home / johndoe / web -
getopts con opzioni lunghe
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / web -
semplice
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Ci sono altri modi per farlo che tu considereresti?
Qualche buona pratica, qualcosa di elegante?