Недавно я наткнулся на многострочный тип комментария, которого я никогда раньше не видел - вот пример сценария:
echo a
#
: aaa
: ddd
#
echo b
Кажется, это работает, даже vim
синтаксис подчеркивает это. Как называется этот стиль комментирования и как найти больше информации об этом?
bash
shell-script
Веслав Герр
источник
источник
CommentedOutBlock() { echo "test"; }
Ответы:
Это не многострочный комментарий.
#
это однострочный комментарий.:
(двоеточие) вовсе не комментарий, а встроенная команда оболочки, которая в основном представляет собой NOP , нулевая операция, которая ничего не делает, кроме возврата true, liketrue
(и, таким образом, установка$?
в 0 в качестве побочного эффекта). Однако, поскольку это команда, она может принимать аргументы и, поскольку игнорирует свои аргументы, в большинстве случаев она внешне действует как комментарий. Основная проблема с этим клуджем - аргументы все еще расширяются, что приводит к множеству непреднамеренных последствий. На аргументы по-прежнему влияют синтаксические ошибки, перенаправления все еще выполняются, поэтому они: > file
будут усеченыfile
, а: $(dangerous command)
замены все равно будут выполняться.Наименее удивительный абсолютно безопасный способ вставки комментариев в сценарии оболочки - это
#
. Придерживайтесь этого даже для многострочных комментариев. Никогда не пытайтесь (ab) использовать:
для комментариев. В оболочке нет специального механизма многострочного комментария, аналогичного слэш-звезде/* */
вC
подобных языках.Для полноты, но не потому, что это рекомендуемая практика, я упомяну, что здесь можно использовать здесь документы для многострочных «комментариев»:
источник
<<
строке - это отключает подстановку и расширение.:
для вещей, которые должны быть комментариями, приведет к дополнительному потреблению ОЗУ / ЦП. Это не будет иметь значения для простых вещей на вашем рабочем столе, но если это будет выполняться сотни или тысячи раз в секунду, вы ничего не сделаете , очень быстро .: <<=cut
позволяет писать POD в сценариях оболочки, подробности смотрите в этом примере . Это позволяет использоватьperldoc script.sh
. Однако многострочный комментарий, показанный в этом ответе, обязательно должен быть блоком комментариев (каждая строка начинается с#
).Это не какой-либо стиль комментирования.
:
встроенная команда абсолютно ничего не делает; это злоупотребляют за комментирование здесь.источник
В ранних оболочках двоеточие было единственным способом создания комментариев.
Однако это не настоящий комментарий, потому что строка анализируется точно так же, как любая другая команда, и это может иметь побочные эффекты. Например:
(Иногда двоеточие используется исключительно с целью вызвать эти побочные эффекты, но затем оно не используется в качестве комментария.)
Иногда удобно использовать двоеточие для комментирования части скрипта:
Это значительно экономит время, предшествуя каждой строке
#
, особенно если комментирование носит временный характер.источник
/* */
и тьфу, не заводите меня<!-- -->
!Если ваш комментарий находится в конце скрипта, вы можете сделать это так:
источник