Podczas tworzenia skryptów powłoki przy użyciu potoków i używania odwrotnego ukośnika do kontynuowania linii, chcę wstawiać komentarze do oddzielnych linii w solidny, czytelny i przenośny sposób.
Na przykład, biorąc pod uwagę to niekomentowane polecenie wieloliniowe (skradzione z @DigitalRoss ze względu na jego przejrzystość):
echo abc |
tr a-z A-Z |
sort |
uniq
... poniżej jest estetycznie najbliżej tego, co chcę osiągnąć, ale z oczywistych powodów nie działa ... i tak, jestem w pełni świadomy, że nie jest to zwykle coś wartego komentarza:
# 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
Istniejące powiązane odpowiedzi wydają mi się niezadowalające :
Po pierwsze, odpowiedź Glenna Jackmana (dodawanie argumentów do tablicy, a następnie wykonanie tablicy) działa dla pojedynczych poleceń, ale nie działa w przypadku potokowania (a nawet jeśli tak, dodaje złożoności, której chciałbym uniknąć).
Po drugie, odpowiedź @Gilles tutaj (która używa :
) również nie wydaje się działać z potokowaniem, ponieważ zmienia przepływ potoku:
$ echo "abc" | :
$
( UWAGA : Jeśli istnieje odpowiednik, :
który przekazuje dane wyjściowe bez modyfikacji, byłoby to estetycznie dopuszczalne, ale nie udało mi się go znaleźć. Mógłbym napisać niestandardowy, ale zmniejszyłby przenośność.)
Wreszcie ostatnia część odpowiedzi DigitalRoss na StackOverflow działa dobrze w przypadku dodawania komentarzy w tej samej linii, ale zdecydowanie wolę komentarze w osobnych liniach. W przeciwnym razie, gdy linie mają bardzo różne długości, zmniejsza się czytelność:
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
Szukam odpowiedzi, które zachowają czytelność i zminimalizują złożoność, lub też pewne tło, dlaczego to, czego szukam, jest niemożliwe.
i++; // increment i by one
. Proponuję przeczytać „Elementy stylu programowania”