Lors de la création de scripts shell à l'aide de pipelines et de l'utilisation de la barre oblique inverse pour continuer les lignes, je souhaite insérer des commentaires sur des lignes distinctes , de manière robuste, lisible et portable.
Par exemple, étant donné cette commande multi-lignes non commentée (volée à @DigitalRoss pour sa clarté):
echo abc |
tr a-z A-Z |
sort |
uniq
... ce qui suit est esthétiquement le plus proche de ce que je veux accomplir, mais pour des raisons évidentes, ne fonctionne pas ... et oui, je suis bien conscient que ce n'est normalement pas quelque chose qui mérite d'être commenté:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
Les réponses connexes existantes me semblent insatisfaisantes , comme suit:
Tout d'abord, la réponse de glenn jackman (ajouter des arguments à un tableau, puis exécuter le tableau) fonctionne pour les commandes uniques, mais ne fonctionne pas pour le pipelining (et même si c'était le cas, cela ajoute de la complexité que j'aimerais éviter).
Deuxièmement, la réponse de @Gilles ici (qui utilise :
) ne semble pas non plus fonctionner avec le pipelining, car elle modifie le flux du pipeline:
$ echo "abc" | :
$
( REMARQUE : s'il existe un équivalent :
qui transmet la sortie non modifiée, ce serait esthétiquement acceptable, mais je n'ai pas pu en trouver un. Je pourrais en écrire un personnalisé, mais cela réduirait la portabilité.)
Enfin, la dernière partie de la réponse de DigitalRoss sur StackOverflow fonctionne bien pour ajouter des commentaires sur la même ligne, mais je préfère fortement les commentaires sur des lignes distinctes. Sinon, lorsque les lignes ont des longueurs très variables, la lisibilité est réduite:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
Je suis à la recherche de réponses qui préservent la lisibilité et minimisent la complexité, ou bien des informations sur pourquoi ce que je recherche est irréalisable.
i++; // increment i by one
. Je vous suggère de lire "Les éléments du style de programmation"Réponses:
Que dis-tu de ça?
(La barre oblique inverse doit être utilisée comme dernier caractère de ces lignes.) Je ne suis pas sûr de la portabilité de cette approche, mais cela fonctionne bien avec le courant
bash
.la source