2010-10-21 17 views
6

Estoy buscando algo similar a indent pero para scripts (bash). Solo consola, sin coloreado, etc.Pretty-print para script de shell

¿Conoces alguna?

+0

Considere también poner sus respuestas en [esta pregunta más general] (http://stackoverflow.com/questions/3923301/what-applications-do-you-know-of-that-can-reformat-code) – Benoit

Respuesta

5

Vim puede sangrar guiones bash. Pero no reformatearlos antes de sangrar.
Realice una copia de seguridad de su script bash, ábralo con vim, escriba gg=GZZ y la sangría será corregida. (Nota para los impacientes: esto sobrescribe el archivo, así que asegúrese de hacer esa copia de seguridad!)

Sin embargo, algunos errores con << (esperando EOF como primer personaje en una línea) p.

EDIT: ZZ no ZQ

+0

¡Ah hombre! +1000 si pudiera. – Jamie

0

En bash hago esto:

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

esto elimina los comentarios y resangra el guión "modo fiesta". no va a funcionar si el script contiene heredocs pero si usted hace esto:

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

que funcionará con cualquier secuencia de comandos, pero todo el guión será sangría por 4 espacios. ¡siéntase libre de modificar, pero cite mi nombre en su script y publíquelo! : D