J'ai récemment commencé à étudier le shell script et j'aimerais pouvoir commenter un ensemble de lignes dans un shell script. Je veux dire comme dans le cas de C/Java :
/* comment1
comment2
comment3
*/`
Comment pourrais-je faire ça ?
J'ai récemment commencé à étudier le shell script et j'aimerais pouvoir commenter un ensemble de lignes dans un shell script. Je veux dire comme dans le cas de C/Java :
/* comment1
comment2
comment3
*/`
Comment pourrais-je faire ça ?
Il ajoute également une grande quantité d'illisibilité et une source potentielle de bogues. IMHO est mieux d'utiliser plusieurs #
et jamais ce...
@jm666 IMHO Jamais une bonne idée d'utiliser ce mot. jamais quand vous n'avez aucune idée de tous les cas d'utilisation.
Pour expliquer : :
est un raccourci pour true
et true
ne traite aucun paramètre. (page du manuel : SYNOPSIS true [ignored command line arguments]
Commentaire multiligne dans bash
: <<'END_COMMENT'
This is a heredoc (<<) redirected to a NOP command (:).
The single quotes around END_COMMENT are important,
because it disables variable resolving and command resolving
within these lines. Without the single-quotes around END_COMMENT,
the following two $() `` commands would get executed:
$(gibberish command)
`rm -fr mydir`
comment1
comment2
comment3
END_COMMENT
Il est probablement utile de noter que ceci n'est pas un commentaire en soi. C'est un heredoc qui est redirigé vers la commande NOP comme une chaîne de plusieurs lignes. Le guillemet simple est important pour désactiver la résolution des variables et des commandes.
Bash ne fournit pas de module intégré, mais il existe des astuces utilisant la syntaxe bash existante. Le plus simple est d'utiliser un HEREDOC, mais de rendre évident ce que vous faites, et d'utiliser le même marqueur HEREDOC partout :
<< --MULTILINE-COMMENT--
line 1
line 2
line 3
line 4
--MULTILINE-COMMENT--
Certains messages mentionnent que le marqueur HEREDOC doit être cité afin d'éviter certains effets secondaires de l'analyse du shell. Je n'ai trouvé cela nécessaire que si vous utilisez des guillemets dans votre commentaire. Même avec set -o verbose
et $variables
mentionné dans le commentaire, la citation du marqueur n'est pas nécessaire. YMMV.
Si vous utilisez le : '
mentionnée dans une autre réponse, alors documentez ce qu'il en est via un méta-commentaire, utilisez le même méta-commentaire partout et n'oubliez pas de doubler toutes les occurrences de '
dans le commentaire (un éditeur de coloration syntaxique le rendra évident) :
: 'Multiline comment:
line 1
line 2 we''re going to try this eventually
line 3
'
Les deux sont des hacks, ils pourraient donc casser des scripts à l'avenir.
Il existe sûrement d'autres techniques, mais il ne semble pas y avoir de manière "conventionnelle" de le faire.
Comme l'indique la réponse précédente, à part les guillemets, la séquence $(...) sera également développée car les deux formes sont des substitutions de commandes.
"Les deux sont des hacks, donc ils pourraient casser des scripts dans le futur." Pourriez-vous développer ce point ? Bien que les hacks sémantiquement, syntaxiquement ils sont valides et ne devraient pas casser à l'avenir, à moins que bash ne décide de devenir berserk et de casser heredocs.
Après avoir lu les autres réponses ici, j'ai trouvé le texte ci-dessous, qui, à mon avis, indique clairement qu'il s'agit d'un commentaire. Particulièrement adapté pour les informations d'utilisation in-script :
<< ////
Usage:
This script launches a spaceship to the moon. It's doing so by
leveraging the power of the Fifth Element, AKA Leeloo.
Will only work if you're Bruce Willis or a relative of Milla Jovovich.
////
En tant que programmeur, la séquence de barres obliques s'inscrit immédiatement dans mon cerveau comme un commentaire (même si les barres obliques sont normalement utilisées pour les commentaires de ligne).
Bien sûr, "////"
est juste une chaîne de caractères ; le nombre de barres obliques dans le préfixe et le suffixe doit être égal.
Excellent complément à la réponse ci-dessus. Honnêtement, je pense que vous auriez pu modifier la réponse ci-dessus, et ajouter ceci, au lieu de répondre séparément.
Il y a quelques réponses "au-dessus" (selon l'ordre de tri). Et, en répondant séparément, j'ai voulu expliquer le raisonnement qui sous-tend la chaîne que j'ai choisie.
Quelle est votre opinion sur ce sujet ?
function giveitauniquename()
{
so this is a comment
echo "there's no need to further escape apostrophes/etc if you are commenting your code this way"
the drawback is it will be stored in memory as a function as long as your script runs unless you explicitly unset it
only valid-ish bash allowed inside for instance these would not work without the "pound" signs:
1, for #((
2, this #wouldn't work either
function giveitadifferentuniquename()
{
echo nestable
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Vous pouvez utiliser un dièse comme : #ceci est un commentaire.
1 votes
Je sais mais c'est un peu gênant pour les multilignes.
2 votes
Il convient de noter que les réponses ci-dessous exigent que le
:
être dans la première colonne (sans espace avant) de la ligne.