Block Comments dans un script Shell

Est-il un moyen simple de commenter un bloc de code dans un script shell?

193
demandé sur A-B-B 2009-06-04 03:53:34

10 réponses

Dans bash:

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

les ' et ' autour du délimiteur END sont importants, sinon les choses à l'intérieur du bloc comme par exemple $(command) seront analysées et exécutées.

Pour une explication, voir ce et ce question.

279
répondu sunny256 2017-06-23 14:17:14

il n'y a aucun commentaire de bloc sur le script shell.

utilisant vi (Oui, vi ) vous pouvez facilement commenter de la ligne n à m

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

(c'est-à-dire, de la ligne 10 à la ligne 100, remplacer le début de la ligne (^) par le signe#.)

et de l'onu commentaire avec

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

(qui se lit comme suit: 100 remplacer le début de ligne ( ^ ) suivi de # avec //.)

vi est presque universel partout où il y a /bin/sh .

76
répondu OscarRyz 2016-12-02 20:37:49

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
41
répondu Dan 2013-04-10 15:45:55

ce qui suit devrait fonctionner pour sh , bash , ksh et zsh .

les blocs de code à commenter peuvent être placés à l'intérieur de 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

pour uncement les blocs de code ainsi commenté, dire

alias BEGINCOMMENT="if : ; then"

au lieu de

alias BEGINCOMMENT="if [ ]; then"

dans l'exemple ci-dessus.

22
répondu devnull 2013-12-11 11:20:06

si vous pouvez esquiver les guillemets simples:

__='
blah blah comment.
'
19
répondu vanvliet.eric 2013-10-16 16:38:06

Dans Vim:

  1. aller à la première ligne du bloc que vous souhaitez faire des commentaires
  2. shift-V (entrer en mode visuel), en haut en bas des lignes de surlignage dans le bloc
  3. exécuter ce qui suit sur la sélection :s/^/#/
  4. la commande ressemblera à ceci:

      :'<,'>s/^/#
    
  5. appuyez sur entrée

p.ex.

shift-V
jjj
:s/^/#
<enter>
14
répondu stefanB 2009-06-04 00:54:50

vous pouvez utiliser le mode bloc visuel 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  

Décommenter serait:

Ctrl-V  
Highlight #'s  
d  
l  

c'est la façon interactive de vi de faire ce genre de chose plutôt que de compter ou de lire des numéros de ligne.

enfin, dans Gvim vous utilisez ctrl-q pour passer en mode bloc visuel plutôt que ctrl-v (parce que c'est le raccourci pour coller).

4
répondu horta 2015-02-06 23:02:14

tellement trop d'ingé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 le mode de sélection de bloc. Simplement l'utiliser pour ajouter # pour toutes les lignes que vous souhaitez commenter. Quelle est la grosse affaire...

exemple de bloc-notes:

pour créer: Alt - mousedrag down, appuyez sur #.

supprimer: Alt-mousedrag bas, shift-droit flèche, supprimer.

2
répondu Rusty75 2017-02-27 15:35:08

une variante de l'astuce here-doc dans la réponse acceptée par sunny256 est d'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é, ce qui vous permet de l'imprimer joliment formaté, le convertir en une page de manuel, etc.

en ce qui concerne le réservoir, il suffit de 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 " documentation D'intégration dans le script shell ")

1
répondu mivk 2017-02-15 11:04:10

un autre mode est: Si votre éditeur N'a pas L'option BLOCK comment,

  1. Ouvrir une deuxième instance de l'éditeur (par exemple, Fichier=>Nouveau Fichier...)
  2. à partir du fichier précédent sur lequel vous travaillez, sélectionnez seulement la partie que vous voulez commenter
  3. copiez et collez-le dans la fenêtre du nouveau fichier temporaire...
  4. ouvrir le menu Édition, Sélectionner remplacer et entrer comme chaîne de caractères à remplacer "\n'
  5. remplacer chaîne de caractères: '\n# '
  6. appuyez sur le bouton "Remplacer tout "

fait

il travaille avec N'importe quel éditeur

0
répondu mardocheo 2018-09-10 13:23:17