Quelqu'un peut-il suggérer comment commenter des lignes particulières du script Shell autres que #
?
Supposons que je veuille commenter cinq lignes. Au lieu d'ajouter #
à chaque ligne, existe-t-il un autre moyen de commenter les cinq lignes?
Vous pouvez commenter une section d'un script en utilisant une condition.
Par exemple, le script suivant:
DEBUG=false
if ${DEBUG}; then
echo 1
echo 2
echo 3
echo 4
echo 5
fi
echo 6
echo 7
produirait:
6
7
Afin de décommenter la section du code, il vous suffit de commenter la variable:
#DEBUG=false
(Cela ferait imprimer les nombres de 1 à 7.)
Oui (bien que ce soit un méchant bidouille). Vous pouvez utiliser un heredoc ainsi:
_#!/bin/sh
# do valuable stuff here
touch /tmp/a
# now comment out all the stuff below up to the EOF
echo <<EOF
...
...
...
EOF
_
Qu'est-ce que ça fait? Une heredoc
introduit toutes les entrées suivantes jusqu'au terminateur (dans ce cas, EOF) dans la commande désignée. Ainsi, vous pouvez entourer le code que vous souhaitez commenter avec
_echo <<EOF
...
EOF
_
et il va prendre tout le code contenu entre les deux EOF et les alimenter dans echo
(echo
ne lit pas à partir de stdin, donc tout est jeté).
Notez qu'avec ce qui précède, vous pouvez mettre n'importe quoi dans le heredoc
. Il ne doit pas nécessairement s'agir d'un code Shell valide (c'est-à-dire qu'il ne doit pas être analysé correctement).
C'est très méchant, et je ne l'offre que comme un point d'intérêt. Vous ne pouvez pas faire l'équivalent de C _/* ... */
_
Vous devez compter sur '#' mais pour faciliter la tâche dans vi, vous pouvez effectuer les opérations suivantes (appuyez d'abord sur échappement):
:10,20 s/^/#
avec 10 et 20 étant les numéros de début et de fin des lignes que vous souhaitez commenter
et à annuler lorsque vous avez terminé:
:10,20 s/^#//
pour un commentaire d'une seule ligne, ajoutez # au début d'une ligne
pour les commentaires sur plusieurs lignes, ajoutez ' (guillemet simple) à partir de l'endroit où vous souhaitez commencer et ajoutez ' (encore un guillemet simple) au point où vous souhaitez mettre fin à la ligne de commentaire.