web-dev-qa-db-fra.com

Comment commenter des lignes particulières dans un script Shell

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?

58
user2400564

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.)

34
devnull

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 _/* ... */_

20
Brian Agnew

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/^#//
4
S. Morehouse

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.

3
Yash Shah