Heredoc o un file di template esterno nel mio script di bash - come influisce sulla leggibilità / manutenzione?

1

Mi rendo conto che questa domanda potrebbe non essere di preferenza personale, ma sono piuttosto nuova nello scripting di Bash / shell, quindi ho pensato che valesse la pena fare qualche ricerca per vedere se c'è una sorta di standard / best practice o di consenso accettabile.

Sto lavorando su alcuni script che alla fine mi piacerebbe rilasciare open source (probabilmente la licenza del MIT) quindi vorrei che gli script fossero "fatti bene", se c'è una cosa del genere.

Lo script in questione deve produrre un file di testo di output da un modello usando la sostituzione / espansione variabile per "riempire gli spazi vuoti" per così dire. Attualmente sto usando il metodo heredoc ma vorrei conservare i rientri TAB, sia nel mio script che nell'output (per la leggibilità).

Anche se ho raggiunto questo risultato fino ad un certo punto usando cat <<-EOF per rimuovere le schede iniziali (dal mio script) e usando una variabile per memorizzare lo spazio del TAB (ad esempio T="$(printf '\t')" ) che poi faccio riferimento a $T che viene quindi interpretato correttamente in heredoc in un carattere TAB, non posso fare a meno di pensare se un file esterno sarebbe semplicemente più semplice?

Che cosa possono dire qualcuno di voi più esperti di sceneggiatori di bash? Quale di queste pratiche è migliore per quanto riguarda la leggibilità / manutenzione del codice?

Ecco un rapido esempio di cosa intendo ...

my_function() {
    T="$(printf '\t')"
    cat <<- EOF
        This is my template for $something
        $T  I'm indented with the TAB space variable...
        $T  ...but actually I'm indented twice because the "<<-" only strips the 'leading' tabs
        There's something else that I need, but it might be \${printed_literally}/$or_expanded which is cool!
    EOF
}

Non è niente speciale in realtà, non sto cercando una 'soluzione' in quanto tale, più solo alcune indicazioni su quale soluzione usare - cioè heredoc nel script o un file modello esterno?

    
posta Chris 23.08.2012 - 19:29
fonte

1 risposta

1

Sembra più semplice includere tutto il testo relativo allo script all'interno dello script stesso, all'interno di heredoc , come hai fatto tu.

Gli script di Bash sono pensati per essere codice della colla , niente di troppo serio e complicato. Se il tuo copione sta diventando serio o complicato, è un segno da considerare l'utilizzo di un linguaggio di programmazione o di scripting più avanzato.

    
risposta data 30.12.2014 - 16:35
fonte

Leggi altre domande sui tag