Saltar al contenido

¿Forma de crear comentarios de varias líneas en Bash?

La guía paso a paso o código que verás en este artículo es la resolución más sencilla y válida que encontramos a tu duda o dilema.

Solución:

Usar : ' para abrir y ' cerrar.

Por ejemplo:

: '
This is a
very neat comment
in bash
'

Comentario de varias líneas en bash

: <<'END_COMMENT'
This is a heredoc (<<) redirected to a NOP command (:).
The single quotes around END_COMMENT are important,
because it disables variable resolving and command resolving
within these lines.  Without the single-quotes around END_COMMENT,
the following two $() `` commands would get executed:
$(gibberish command)
`rm -fr mydir`
comment1
comment2 
comment3
END_COMMENT

Nota: actualicé esta respuesta en función de los comentarios y otras respuestas, por lo que es posible que los comentarios anteriores al 22 de mayo de 2020 ya no se apliquen. También noté hoy que algunos IDE como VS Code y PyCharm no reconocen un marcador HEREDOC que contiene espacios, mientras que bash no tiene problemas con eso, así que estoy actualizando esta respuesta nuevamente.

Bash no proporciona una sintaxis integrada para comentarios de varias líneas, pero hay trucos que usan la sintaxis de bash existente que "funcionan ahora".

Personalmente, creo que lo más simple (es decir, menos ruidoso, menos extraño, más fácil de escribir, más explícito) es usar un HEREDOC citado, pero que sea obvio lo que está haciendo y use el mismo marcador HEREDOC en todas partes:

<<'###BLOCK-COMMENT'
line 1
line 2

line 3
line 4
###BLOCK-COMMENT

Las comillas simples del marcador HEREDOC evitan algunos efectos secundarios del análisis de shell, como sustituciones extrañas que provocarían bloqueos o resultados, e incluso el análisis del propio marcador. Entonces, las comillas simples le dan más libertad en el marcador de comentario abierto-cerrado.

Por ejemplo, lo siguiente usa un hash triple que sugiere un comentario de varias líneas en bash. Esto bloquearía el script si las comillas simples estuvieran ausentes. Incluso si quitas ###, el FOO bloquearía el script (o haría que se imprimiera una mala sustitución si no set -e) si no fuera por las comillas simples:

set -e

<<'###BLOCK-COMMENT'
something something $FOO something
more comment
###BLOCK-COMMENT

ls

Por supuesto, podrías simplemente usar

set -e

<<'###'
something something $FOO something
more comment
###

ls

pero la intención de esto es definitivamente menos clara para un lector que no esté familiarizado con este engaño.

Tenga en cuenta mi respuesta original utilizada '### BLOCK COMMENT', lo cual está bien si usas vanilla vi/vim, pero hoy noté que PyCharm y VS Code no reconocen el marcador de cierre si tiene espacios.

Hoy en día cualquier buen editor te permite pulsar ctrl-/ o similar, para des/comentar la selección. Todos definitivamente entienden esto:

# something something $FOO something
# more comment
# yet another line of comment

aunque es cierto que esto no es tan conveniente como el comentario de bloque anterior si desea volver a llenar sus párrafos.

Seguramente existen otras técnicas, pero no parece haber una forma "convencional" de hacerlo. Sería bueno si ###> y ###< podría agregarse a bash para indicar el inicio y el final del bloque de comentarios, parece que podría ser bastante sencillo.

Reseñas y puntuaciones

Recuerda comunicar esta noticia si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 5 Promedio: 4.2)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *