Sto scrivendo uno script di shell con alcune variabili che dovrebbero essere configurate dall'utente. Ci sarà un programma di installazione per il download e la configurazione dello script, eventualmente ponendo una serie di domande. Lo script in questione è rivolto ad altri sviluppatori.
Questo può essere implementato in diversi modi:
Usa i segnaposto nello script stesso e utilizzali
sed
per sostituirli durante l'installazione (qualcosa del genere: /programming/415677/how-to-replace-placeholders-in-a-text-file )Pro: tutte le definizioni delle variabili sono contenute nello script. È facile scaricare manualmente lo script e configurare le variabili per gli utenti che preferiscono un editor rispetto al programma di installazione.
Contro: è difficile riconfigurare le variabili attraverso il programma di installazione una volta che sono in atto. A meno che non crei una regexp più complessa che sarebbe soggetta a errori.
Usa un file di configurazione , in pratica un altro script di shell con assegnazioni, e usa
source
per includerlo. (E probabilmente inserirlo in~/.scriptname
? Lo script principale viene copiato in/usr/local/bin
)Pro: è facile riconfigurare lo script. Potrebbe anche aggiungere un parametro per farlo dallo script principale (probabilmente funzionerebbe anche nella prima soluzione, ma modificare uno script da solo non sembra un'ottima idea)
Contro: lo script ora dipende da due file e l'utente deve eseguire il programma di installazione per creare il file di configurazione. Questo può essere risolto generando automaticamente un file di configurazione se non esiste. Ma individuare un file di configurazione esterno sarà ancora più complicato per gli utenti che desiderano semplicemente scaricare lo script, modificarlo e completarlo.
Inoltre, alcune opzioni su come la configurazione deve essere gestita dall'utente dopo l'installazione:
Come
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webInteractive
$ myscript config
Immettere il nome host del server: esempio.org
Immettere il percorso del proxy sul server: / home / johndoe / proxy
Immettere il percorso della directory http sul server: / home / johndoe / webgetopts con opzioni lunghe
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webSemplice
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Ci sono altri modi per farlo che potresti prendere in considerazione?
Qualche best practice, qualcosa di elegante?