Récemment, je suis tombé sur un type de commentaire multiligne que je n’avais jamais vu auparavant - voici un exemple de script:
echo a
#
: aaa
: ddd
#
echo b
Cela semble fonctionner, même la vim
syntaxe le met en évidence. Comment appelle-t-on ce style de commentaire et comment trouver plus d’informations à ce sujet?
bash
shell-script
Wiesław Herr
la source
la source
CommentedOutBlock() { echo "test"; }
Réponses:
Ce n'est pas un commentaire sur plusieurs lignes.
#
est un commentaire d'une seule ligne.:
(deux points) n’est pas du tout un commentaire, mais plutôt une commande intégrée du shell, qui est essentiellement un NOP , une opération null qui ne fait rien, sauf renvoyer true, commetrue
(et donc mettre$?
à 0 comme effet secondaire). Cependant, puisqu'il s'agit d'une commande, il peut accepter des arguments et, comme il l'ignore, il se comporte généralement superficiellement comme un commentaire. Le principal problème de ce problème est que les arguments sont encore développés, ce qui entraîne de nombreuses conséquences imprévues. Les arguments sont toujours affectés par des erreurs de syntaxe, les redirections sont toujours effectuées, elles: > file
seront donc tronquéesfile
et les: $(dangerous command)
substitutions seront toujours exécutées.Le moyen le moins surprenant d’insérer des commentaires dans des scripts shell est l’utilisation de
#
. Tenez-vous en à cela même pour les commentaires sur plusieurs lignes. N'essayez jamais de (ab) utiliser:
pour des commentaires. Il n’existe dans le shell aucun mécanisme de commentaire multi-lignes dédié analogue à la/* */
forme étoile-barre oblique dans desC
langages similaires.Par souci d’exhaustivité, mais pas parce que cela est recommandé, je mentionnerai qu’il est possible d’utiliser ici des documents pour faire des "commentaires" multilignes:
la source
<<
ligne - cela désactive la substitution et l'expansion.:
des éléments qui devraient être des commentaires entraînera une consommation supplémentaire de RAM / CPU. Cela ne fera pas l'affaire pour des choses simples sur votre bureau, mais s'il s'agit de quelque chose exécuté des centaines ou des milliers de fois par seconde, vous ne ferez rien, très vite .: <<=cut
permet d' écrire POD dans des scripts shell, voir cet exemple pour plus de détails . Cela permet d’utiliserperldoc script.sh
. Cependant, le commentaire multiligne indiqué dans cette réponse est quelque chose qui doit absolument être un bloc de commentaires (chaque ligne commençant par#
).Ce n'est pas un style de commentaire. la
:
commande intégrée ne fait absolument rien; on en abuse pour avoir commenté ici.la source
Dans les premiers coquillages, les deux points étaient le seul moyen de créer des commentaires.
Cependant, ce n'est pas un vrai commentaire, car la ligne est analysée de la même manière que toute autre commande, ce qui peut avoir des effets secondaires. Par exemple:
(Parfois, les deux points sont utilisés uniquement dans le but d'invoquer ces effets secondaires, mais ils ne servent alors pas de commentaire.)
Il est parfois pratique d'utiliser les deux points pour commenter une section de script:
C’est un gain de temps considérable par rapport à chaque ligne précédente
#
, en particulier si la mise en commentaire n’est que temporaire.la source
/* */
et euh, ne me lancez pas<!-- -->
!Si votre commentaire se trouve à la fin du script, vous pouvez le faire comme ceci:
la source