Commentaires en ligne pour Bash?
Je voudrais être en mesure de commenter un seul drapeau, une seule ligne de commande. Bash ne semble avoir from # till end-of-line
commentaires. Je suis à la recherche d'astuces comme:
ls -l $([ ] && -F is turned off) -a /etc
C'est moche, mais c'est mieux que rien. Est-il un meilleur moyen?
La suite semble fonctionner, mais je ne suis pas sûr de savoir si c'est portable:
ls -l `# -F is turned off` -a /etc
- Le
#comment
astuce est également mentionné ici: stackoverflow.com/questions/9522631/... - À la suite de la lien mentionné par @Juha Palomäki, il y a ce merveilleux tour
${IFS#comment}
présenté par @pjh dans les commentaires. Pas de sous-shell est invoqué.
Vous devez vous connecter pour publier un commentaire.
Mon préféré est:
Insertion de commentaires dans un script Bash
$(#comment)
ne fonctionne pas.$()
pas de travail?)
dans le commentaire lui-même. La plupart des défis de bash sont dues à la rétro compatibilité avec les anciennes versions, et une stratégie courante consiste à utiliser la plus ancienne solution possible.true && `# comment` && true
est une expression valide. Un vrai commentaire serait de générer quelque chose comme:syntax error near unexpected token
&&"$: echo hello, $( : 'comment, comment.' ) foo
. Vous pouvez même faire des commentaire sur plusieurs lignes avec si vous avez besoin, même si, personnellement, j'ai JAMAIS vu un cas où cela était nécessaire suffisant pour justifier son intégration dans le milieu d'une commande.Je trouve qu'il est plus facile (et plus lisible) pour simplement copier la ligne et commentaire de la version originale:
$(: ...)
est un peu moins moche, mais toujours pas bon.$(: ...)
syntaxe ne semblent réellement pour permettre l'incorporation des commentaires: alors queecho "foo" `# comment` "bar"
prendra fin le commentaire lors de la deuxième backtick, la supposée équivalenteecho "foo" $(: # comment) "bar"
ne pas analyser quoi que ce soit derrière le#
.Comment le stocker dans une variable?
La plupart des commandes permettent d'arguments pour venir dans n'importe quel ordre. Il suffit de déplacer le commentaire des drapeaux à la fin de la ligne:
Puis de le rallumer, supprimer simplement les commentaires et supprimer le texte:
#
sans un seul espace après la commande. merci!!!!Voici ma solution pour les commentaires en ligne entre plusieurs canalisations de commandes.
Exemple décommenté code:
Solution pour une pipe commentaire (à l'aide d'une fonction d'assistance):
Ou si vous préférez, voici la même solution sans la fonction d'assistance, mais c'est un peu messier:
Si vous connaissez une variable est vide, vous pouvez l'utiliser comme un commentaire. Bien sûr, si elle n'est pas vide, il va gâcher votre commande.
§ 10.2. Paramètre De Substitution
${name:=comment}
pour être sûr.Si le commentaire est en vaut la peine, il ne peut probablement aller à la fin de la ligne, ou sur une ligne sur son propre. Rarement j'ai trouver un besoin pour l'intérieur de la ligne de commentaires avec le code avant et après le commentaire dans n'importe quelle langue.
Oh, il y a une exception près, qui est le langage SQL j'ai l'habitude de l'utiliser qui utilise '{commentaires}'. Parfois, je vais écrire:
Mais même cela est un étirement.
Pour la désactivation d'une partie d'une commande comme
a && b
, j'ai simplement créé un vide scriptx
qui est sur le chemin, afin que je puisse faire des choses comme:quand j'ai besoin de construire, et
lorsqu'il n'est pas (à l'aide de Ctrl + A et Ctrl + E pour vous déplacer au début et à la fin).
Comme indiqué dans les commentaires, une autre façon de le faire est intégrée à Bash
:
au lieu dex
::
Comme dans:string; of; commands; : disabled; enabled;