При создании сценариев оболочки с использованием конвейеров и обратной косой черты для продолжения строк я хочу вставлять комментарии на отдельных строках надежным, читаемым и переносимым способом.
Например, учитывая эту некомментированную многострочную команду (украденную у @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
. Я предлагаю вам прочитать "Элементы стиля программирования"Ответы:
Как насчет этого?
(Обратная черта должна использоваться как последний символ в этих строках.) Я не уверен в переносимости этого подхода, но он точно работает с текущей
bash
.источник