Pregunta Bloquear comentarios en un script de shell


¿Hay una manera simple de comentar un bloque de código en un script de shell?


189
2018-06-03 23:53


origen


Respuestas:


En bash:

#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment

los ' y ' alrededor de END los delimitadores son importantes, de lo contrario las cosas dentro del bloque como por ejemplo $(command) será analizado y ejecutado.

Para una explicación, ver esta y esta pregunta.


269
2018-06-04 00:02



No hay ningún comentario de bloque en el script de shell.

Utilizando vi (sí, vi) puedes comentar fácilmente desde la línea norte a metro

<ESC>
:10,100s/^/#/

(que dice, de la línea 10 a la 100, comienzo de línea sustitutivo (^) con un signo #).

y sin comentarios con

<ESC>
:10,100s/^#//

(que dice, de la línea 10 a la 100, comienzo de línea sustituto (^) seguido de # con la anotación //)

vi es casi universal en cualquier lugar donde hay /bin/sh.


77
2018-06-04 00:28



Puedes usar:

if [ 1 -eq 0 ]; then
  echo "The code that you want commented out goes here."
  echo "This echo statement will not be called."
fi

41
2018-04-10 15:26



Lo siguiente debería funcionar para sh,bash, ksh y zsh.

Los bloques de código que se comentarán se pueden poner dentro BEGINCOMMENT y ENDCOMMENT:

[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"

BEGINCOMMENT
  echo "This line appears in a commented block"
  echo "And this one too!"
ENDCOMMENT

echo "This is outside the commented block"

Ejecutar el código anterior resultaría en:

This is outside the commented block

A fin de que descomentar los bloques de código así comentados, dicen

alias BEGINCOMMENT="if : ; then"

en lugar de

alias BEGINCOMMENT="if [ ]; then"

en el ejemplo anterior.


21
2017-10-16 16:58



si puedes esquivar las comillas simples:

__='
blah blah comment.
'

19
2017-10-15 07:23



En Vim:

  1. ve a la primera línea del bloque que quieras comentar
  2. shift-V (ingrese al modo visual), arriba abajo líneas resaltadas en el bloque
  3. ejecuta lo siguiente en la selección :s/^/#/
  4. el comando se verá así:

      :'<,'>s/^/#
    
  5. Presione enter

p.ej.

shift-V
jjj
:s/^/#
<enter>

14
2018-06-04 00:30



Puedes usar el modo Visual Block de Vi / Vim, que está diseñado para cosas como esta:

Ctrl-V  
Highlight first element in rows you want commented  
Shift-i  
#  
esc  

Descomentar sería:

Ctrl-V  
Highlight #'s  
d  
l  

Esta es la forma interactiva de vi de hacer este tipo de cosas en lugar de contar o leer números de línea.

Por último, en Gvim utiliza ctrl-q para entrar en modo Visual Block en lugar de ctrl-v (porque ese es el atajo para pegar).


4
2018-02-06 23:02



Tanto exceso de ingeniería ...

Considero realmente una mala práctica escribir código activo para generar código pasivo.

Mi solución: la mayoría de los editores tienen el modo de selección de bloque. Solo úsalo para agregar # a todas las líneas que quieras comentar. Cual es el problema...

Ejemplo de Bloc de notas:

Para crear: Alt - mousedrag down, presione #.

Para eliminar: Alt-mousedrag down, shift-right arrow, delete.


3
2018-02-27 15:35



Una variación del truco aquí-doc en la respuesta aceptada por sunny256 es usar las palabras clave de Perl para comentarios. Si sus comentarios son en realidad algún tipo de documentación, puede comenzar a usar la sintaxis de Perl dentro del bloque comentado, que le permite imprimirlo con un buen formato, convertirlo a una página de manual, etc.

En lo que respecta al shell, solo necesita reemplazar 'END' con '=cut'.

echo "before comment"
: <<'=cut'
=pod

=head1 NAME
   podtest.sh - Example shell script with embedded POD documentation

etc.

=cut
echo "after comment"

(Encontrado en "Incrustar documentación en script de shell")


0
2018-02-15 11:04