Manera de crear comentarios multilínea en Bash?


Recientemente he comenzado a estudiar el script de shell y me gustaría poder comentar un conjunto de líneas en un script de shell. Quiero decir como es en el caso de C / Java:

/* comment1
   comment2 
   comment3
*/`

¿Cómo podría hacer eso?

Author: Enes Malik Turhan, 2017-04-01

4 answers

Use : ' para abrir y ' para cerrar.

Por ejemplo:

: '
This is a
very neat comment
in bash
'
 123
Author: drizer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-24 08:08:45

Comentario multilínea 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.
comment1
comment2 
comment3
END_COMMENT
 61
Author: David Okwii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 16:57:52

Bash no proporciona un builtin pero hay hacks usando la sintaxis bash existente. Lo más simple es usar un HEREDOC, pero haga obvio lo que está haciendo, y use el mismo marcador de HEREDOC en todas partes:

<< --MULTILINE-COMMENT--
line 1
line 2

line 3
line 4
--MULTILINE-COMMENT--

Algunos mensajes mencionan que el marcador de HEREDOC debe ser citado con el fin de evitar algunos shell analizar los efectos secundarios. Solo he encontrado que esto es necesario si utiliza backquotes en su comentario. Incluso con set -o verbose y $variables mencionados en el comentario, citar el marcador no es necesario. YMMV.

Si utiliza el enfoque : ' mencionado en otra respuesta, documente lo que es a través de un meta-comentario, use el mismo meta-comentario en todas partes, y recuerde duplicar cualquier ocurrencia de ' dentro del comentario (un editor de color de sintaxis lo hará obvio):

: 'Multiline comment:
line 1
line 2 we''re going to try this eventually
line 3
'

Ambos son hacks para que puedan romper scripts en el futuro.

Seguramente hay otras técnicas, pero no parece haber una forma "convencional" de hacerlo.

 8
Author: Oliver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-12 21:36:12

Después de leer las otras respuestas aquí se me ocurrió lo siguiente, que en mi humilde opinión deja muy claro que es un comentario. Especialmente adecuado para información de uso en el script:

<< ////

Usage:
This script launches a spaceship to the moon. It's doing so by 
leveraging the power of the Fifth Element, AKA Leeloo.
Will only work if you're Bruce Willis or a relative of Milla Jovovich.

////

Como programador, la secuencia de barras se registra inmediatamente en mi cerebro como un comentario (a pesar de que las barras se utilizan normalmente para los comentarios de línea).

 5
Author: noamtm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 12:41:04