Question Comment commenter des lignes particulières dans un script shell


Quelqu'un peut-il suggérer comment commenter des lignes particulières dans le script shell autre que #?

Supposons que je veuille commenter cinq lignes. Au lieu d'ajouter # à chaque ligne, y a-t-il une autre façon de commenter les cinq lignes?


48
2017-08-21 10:04


origine


Réponses:


Vous pouvez commenter la section d'un script en utilisant un conditionnel.

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 permettrait d'imprimer les numéros 1 à 7.)


30
2017-08-21 10:11



Oui (bien que ce soit un méchant pirater). 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 transmet toutes les entrées suivantes au terminateur (dans ce cas, EOF) dans la commande désignée. Vous pouvez donc entourer le code que vous souhaitez commenter avec

echo <<EOF
...
EOF

et il prendra tout le code contenu entre les deux EOF et les alimentera à echo (echo ne lit pas de stdin donc tout est jeté).

Notez qu'avec ce qui précède, vous pouvez mettre n'importe quoi dans le heredoc. Il n’a pas à être un code shell valide (c’est-à-dire qu’il n’est pas nécessaire d’analyser correctement).

C'est très méchant et je ne le propose que comme point d'intérêt. Vous ne pouvez pas faire l'équivalent de C /* ... */


16
2017-08-21 10:09



Vous devez compter sur '#' mais pour faciliter la tâche dans vi, vous pouvez effectuer les opérations suivantes:

:10,20 s/^/#

avec 10 et 20 étant les numéros de ligne de début et de fin des lignes que vous souhaitez commenter

et défaire quand vous êtes complet:

:10,20 s/^#//

3
2018-01-25 16:19