Existe-t-il un moyen simple de commenter un bloc de code dans un script shell?
Existe-t-il un moyen simple de commenter un bloc de code dans un script shell?
Réponses:
En bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
Le '
et '
autour du END
délimiteur sont importants, sinon les choses à l'intérieur du bloc comme par exemple $(command)
seront analysées et exécutées.
EOF
est un exemple classique (tout comme !
un point d'exclamation en lui-même), mais vous pouvez utiliser SNURFLE_BURGERS
ou classical_end_marker
ou tout autre mot qui n'apparaît pas seul sur une ligne dans le texte commenté. J'apprendrais à expérimenter des espaces, etc., mais le mot pourrait bien fonctionner avec eux aussi.
:
) qui ne lit pas son entrée et se termine toujours avec une valeur réussie, et envoie le "commentaire" en entrée. Pas grand chose.
Il n'y a pas de commentaire de bloc sur le script shell.
En utilisant vi
(oui vi
), vous pouvez facilement commenter à partir de la ligne n à m
<ESC>
:10,100s/^/#/
(qui se lit, de la ligne 10 à 100, remplacer le début de la ligne (^) par un signe #.)
et un commentaire avec
<ESC>
:10,100s/^#//
(qui lit, de la ligne 10 à 100, le début de la ligne de remplacement (^) suivi de # en notant //.)
vi
est presque universel partout où il y a /bin/sh
.
|noh
à la fin. Le tuyau sépare les commandes supplémentaires et noh
n'est destiné à aucun surlignage. La mise en évidence des termes de recherche reprendra automatiquement la prochaine fois que vous rechercherez quelque chose. Exemple::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
alors 0
ou par tout autre moyen pour naviguer). Utilisez ensuite <CTRL>+V
pour entrer en mode de blocage visuel et mettez en surbrillance le début de toutes les lignes que vous souhaitez commenter (dans cet exemple 90 J
). Appuyez ensuite sur SHIFT+I
pour insérer avant le bloc en surbrillance. Entrez le signe du commentaire (par exemple #
) et appuyez sur <ESC>
pour terminer votre préfixe. Cette explication semble super longue, mais d'après mon expérience, elle est beaucoup plus rapide dans la pratique.
Vous pouvez utiliser:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if false;
. stackoverflow.com/a/18019516/2097284
Ce qui suit devrait fonctionner pour sh
, bash
, ksh
et zsh
.
Les blocs de code à commenter peuvent être placés à l'intérieur BEGINCOMMENT
et 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"
L'exécution du code ci-dessus entraînerait:
This is outside the commented block
Afin de décommenter les blocs de code ainsi commentés, disons
alias BEGINCOMMENT="if : ; then"
au lieu de
alias BEGINCOMMENT="if [ ]; then"
dans l'exemple ci-dessus.
si vous pouvez esquiver les guillemets simples:
__='
blah blah comment.
'
Utilisez : '
pour ouvrir et '
fermer.
Par exemple:
: '
This is a
very neat comment
in bash
'
Ceci est de l'exemple de Vegas trouvé ici
À Vim:
shift-V
(entrer en mode visuel), haut en bas des lignes de surbrillance dans le bloc:s/^/#/
la commande ressemblera à ceci:
:'<,'>s/^/#
appuyez sur Entrée
par exemple
shift-V
jjj
:s/^/#
<enter>
:s/^#/
Vous pouvez utiliser le mode Visual Block de Vi / Vim qui est conçu pour des choses comme ceci:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Uncommentaire serait:
Ctrl-V
Highlight #'s
d
l
C'est la manière interactive de vi de faire ce genre de chose plutôt que de compter ou de lire les numéros de ligne.
Enfin, dans Gvim, vous utilisez ctrl-q pour passer en mode Visual Block plutôt que ctrl-v (car c'est le raccourci pour coller).
En toute honnêteté, pourquoi tant de suringénierie ...
Je considère que c'est vraiment une mauvaise pratique d'écrire du code actif pour générer du code passif.
Ma solution: la plupart des éditeurs ont un mode de sélection de bloc. Utilisez-le simplement pour ajouter # à toutes les lignes que vous souhaitez commenter. Quel est le gros problème ...
Exemple de bloc-notes:
Pour créer: Alt - mousedrag down, appuyez sur #.
Pour supprimer: Alt-mousedrag vers le bas, flèche vers la droite, supprimer.
Une variante de l'astuce here-doc dans la réponse acceptée par sunny256 consiste à utiliser les mots clés Perl pour les commentaires. Si vos commentaires sont en fait une sorte de documentation, vous pouvez alors commencer à utiliser la syntaxe Perl à l'intérieur du bloc commenté, qui vous permet de l'imprimer correctement, de le convertir en page de manuel, etc.
En ce qui concerne le shell, il vous suffit de le remplacer 'END'
par '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Trouvé sur " Intégrer la documentation dans le script shell ")
Un autre mode est le suivant: si votre éditeur N'A PAS de commentaire BLOC,
TERMINÉ
cela fonctionne avec n'importe quel éditeur
J'aime une seule ligne ouverte et fermée:
if [ ]; then ##
...
...
fi; ##
Le '##' m'aide à trouver facilement le début et la fin du commentaire de bloc. Je peux coller un nombre après le '##' si j'en ai un tas. Pour désactiver le commentaire, je colle simplement un «1» dans le «[]». J'évite également certains problèmes que j'ai rencontrés avec les guillemets simples dans le bloc commenté.