Створюючи сценарії оболонок за допомогою конвеєрів і використовуючи зворотний косий ривок для продовження рядків, я хочу вставляти коментарі на окремі рядки в надійному, читабельному та портативному режимі.
Наприклад, враховуючи цю некоментовану багаторядкову команду (викрадена у @DigitalRoss для її чіткості):
echo abc |
tr a-z A-Z |
sort |
uniq
... нижче є естетично найближче до того, що я хочу досягти, але з очевидних причин не виходить ... і так, я добре розумію, що це звичайно не варто коментувати:
# 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
Існуючі відповідні відповіді для мене виглядають незадовільно :
По-перше, відповідь Глена Джекмана (додавання аргументів до масиву, а потім виконання масиву) працює для одиночних команд, але не працює для конвеєра (і навіть якщо це було, це додає складності, яку я хотів би уникнути).
По-друге, відповідь @Gilles тут (яка використовує :
) також не працює з конвеєрним трубопроводом, оскільки це змінює потік трубопроводу:
$ echo "abc" | :
$
( ПРИМІТКА . Якщо є еквівалент, :
який передає вихід немодифікований, це було б естетично прийнятним, але я не зміг його знайти. Я міг би написати спеціальну, але це зменшило б мобільність.)
Нарешті, остання частина відповіді DigitalRoss про StackOverflow добре працює для додавання коментарів до того ж рядка, але я дуже віддаю перевагу коментарям в окремих рядках. В іншому випадку, коли рядки мають різну довжину, читабельність знижується:
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
Я шукаю відповіді, які зберігають читабельність та мінімізують складність, а то й інше, чому те, що я шукаю, неможливо.
i++; // increment i by one
. Пропоную прочитати "Елементи стилю програмування"