pasar - Bloquear comentarios en un script de shell
shell script linux (10)
En Vim:
- Ve a la primera línea del bloque que quieres comentar.
-
shift-V
(ingrese al modo visual), hacia arriba, resalte las líneas en el bloque - ejecute lo siguiente en la selección
:s/^/#/
el comando se verá así:
:''<,''>s/^/#
Presione enter
p.ej
shift-V
jjj
:s/^/#
<enter>
¿Hay una forma sencilla de comentar un bloque de código en un script de shell?
En bash
#!/bin/bash
echo before comment
: <<''END''
bla bla
blurfl
END
echo after comment
El ''
y ''
alrededor del delimitador END
son importantes, de lo contrario, las cosas dentro del bloque como, por ejemplo, $(command)
serán analizadas y ejecutadas.
Lo siguiente debería funcionar para sh
, bash
, ksh
y zsh
.
Los bloques de código que se deben comentar se pueden poner dentro de 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
Para descomentar los bloques de código así comentados, digamos
alias BEGINCOMMENT="if : ; then"
en lugar de
alias BEGINCOMMENT="if [ ]; then"
en el ejemplo anterior.
No hay comentarios de bloque en shell script.
Usando vi
(sí, vi
) puede comentar fácilmente desde la línea n hasta la m
<ESC>
:10,100s/^/#/
(que dice, desde la línea 10 a la línea de inicio de sustitución 100 (^) con un signo #).
y un comentario con
<ESC>
:10,100s/^#//
(que dice, desde la línea 10 a la línea 100 sustituye el inicio (^) seguido de # con la nota //.)
vi
es casi universal en cualquier lugar donde haya /bin/sh
.
Otro modo es: si su editor NO TIENE BLOQUEO opción de comentario,
- Abra una segunda instancia del editor (por ejemplo, Archivo => Nuevo archivo ...)
- Desde EL archivo ANTERIOR en el que está trabajando, seleccione SOLO LA PARTE QUE DESEA COMENTAR
- Cópialo y pégalo en la ventana del nuevo archivo temporal ...
- Abra el menú Editar, seleccione REEMPLAZAR e ingrese como cadena a reemplazar ''/ n''
- ingrese como cadena de reemplazo: ''/ n #''
- presione el botón ''reemplazar TODOS''
HECHO
Funciona con cualquier editor
Podría usar el modo de bloque visual de Vi / Vim, que está diseñado para cosas como esta:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Uncomment 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 usas ctrl-q para entrar en el modo Visual Block en lugar de ctrl-v (porque ese es el atajo para pegar).
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
Si puedes esquivar las comillas simples:
__=''
blah blah comment.
''
Tanto manipulación excesiva ...
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 úselo para agregar # a todas las líneas que desee comentar. Cual es el problema...
Ejemplo de bloc de notas:
Para crear: Alt - mousedrag abajo, presione #.
Para eliminar: Alt-mousedrag abajo, flecha de desplazamiento hacia la derecha, eliminar.
Una variación del truco de here-doc en la respuesta aceptada por sunny256 es utilizar las palabras clave de Perl para comentarios. Si sus comentarios son en realidad algún tipo de documentación, entonces puede comenzar a usar la sintaxis de Perl dentro del bloque comentado, lo que le permite imprimirlo con un buen formato, convertirlo en una página de manual, etc.
En lo que respecta al shell, solo necesita reemplazar ''END''
por ''=cut''
.
echo "before comment"
: <<''=cut''
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Se encuentra en " Incrustación de documentación en shell script ")