Способ создания многострочных комментариев в Bash?

недавно я начал изучать сценарий оболочки, и я хотел бы иметь возможность комментировать набор строк в сценарии оболочки. Я имею в виду, как это в случае C/Java :

/* comment1
   comment2 
   comment3
*/`

Как я мог это сделать?

4 ответов


использовать : ' открыть и ' закрыть.

например:

: '
This is a
very neat comment
in bash
'

многострочный комментарий в bash

: <<'END_COMMENT'
This is a heredoc (<<) redirected to a NOP command (:).
The single quotes around END_COMMENT are important,
because it disables variable resolving and command resolving
within these lines.
comment1
comment2 
comment3
END_COMMENT

Bash не предоставляет встроенный, но есть хаки, использующие существующий синтаксис bash. Проще всего использовать HEREDOC, но сделать это очевидно, что вы делаете, и использовать один и тот же маркер HEREDOC везде:

<< --MULTILINE-COMMENT--
line 1
line 2

line 3
line 4
--MULTILINE-COMMENT--

некоторые сообщения упоминают, что маркер HEREDOC должен быть процитирован, чтобы избежать некоторых побочных эффектов синтаксического анализа оболочки. Я нашел это необходимым, только если вы используете backquotes в своем комментарии. Даже с set -o verbose и $variables упоминается в комментарии, цитируя маркер не обязательный. YMMV.

если вы используете : ' подход, упомянутый в другом ответе, затем документируйте, что это такое через мета-комментарий, используйте тот же мета-комментарий везде и не забудьте удвоить любые вхождения ' в комментарии (редактор раскраски синтаксиса сделает это очевидным):

: 'Multiline comment:
line 1
line 2 we''re going to try this eventually
line 3
'

оба являются хаки, так что они могут сломать сценарии в будущем.

есть, конечно, другие методы, но, похоже, нет "обычного" способа сделать он.


после прочтения других ответов здесь я придумал ниже, что ИМХО дает понять, что это комментарий. Особенно подходит для информации об использовании в скрипте:

<< ////

Usage:
This script launches a spaceship to the moon. It's doing so by 
leveraging the power of the Fifth Element, AKA Leeloo.
Will only work if you're Bruce Willis or a relative of Milla Jovovich.

////

как программист, последовательность косых черт немедленно регистрируется в моем мозгу как комментарий (хотя косые черты обычно используются для комментариев строк).