2010-10-21 15 views
6

Sto cercando qualcosa di simile a indent ma per gli script (bash). Solo console, senza colorazione, ecc.Pretty-print per script di shell

Conosci uno?

+0

Considerate anche di mettere le vostre risposte in [questa domanda più generale] (http://stackoverflow.com/questions/3923301/what-applications-do-you-know-of-that-can-reformat-code) – Benoit

risposta

5

Vim può far rientrare gli script di bash. Ma non riformattarli prima di indentare.
Eseguire il backup dello script bash, aprirlo con vim, digitare gg=GZZ e il rientro verrà corretto. (Nota per gli impazienti: questo sovrascrive il file, quindi assicuratevi di fare quel backup!)

Tuttavia, alcuni bug con << (aspettandosi EOF come primo carattere su una riga) ad es.

EDIT: ZZ non ZQ

+0

Ah uomo! +1000 se potessi. – Jamie

0

In bash faccio questo:

source <(echo "Zibri() {";cat script_to_be_reindented.sh; echo "}") 
declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

questo elimina i commenti e reindents lo script "via bash". non funzionerà se lo script contiene HEREDOCS, ma se si esegue questa operazione:

source <(echo "Zibri() {";cat script_to_be_reindented.sh; echo "}") 
declare -f Zibri|head --lines=-1|tail --lines=+3 

che possa funzionare con qualsiasi script, ma l'intero script sarà rientrata da 4 spazi. sentiti libero di modificare, ma cita il mio nome nella sceneggiatura e pubblicalo! : D