Ответ 1
В bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
и '
вокруг разделителя END
важны, иначе вещи внутри блока, такие как, например, $(command)
, будут проанализированы и выполнены.
Есть ли простой способ прокомментировать блок кода в оболочке script?
В bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
и '
вокруг разделителя END
важны, иначе вещи внутри блока, такие как, например, $(command)
, будут проанализированы и выполнены.
Отсутствует комментарий блока для оболочки script.
Используя vi
(да, vi
), вы можете легко прокомментировать строку n до m
<ESC>
:10,100s/^/#/
(который читает, начиная с строки 10 до 100, начинать замену строки (^) знаком #.)
и un comment с помощью
<ESC>
:10,100s/^#//
(который читает, начиная с строки от 10 до 100, начинается замена строки (^), за которой следует # с примечанием //.)
vi
является почти универсальным везде, где существует /bin/sh
.
Вы можете использовать:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
Следующее должно работать для sh
, bash
, ksh
и zsh
.
Блоки кода для комментирования могут быть помещены внутри BEGINCOMMENT
и ENDCOMMENT
:
[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
Выполнение вышеуказанного кода приведет к:
This is outside the commented block
Чтобы раскомментировать блоки блокированных таким образом блоков, скажем
alias BEGINCOMMENT="if : ; then"
вместо
alias BEGINCOMMENT="if [ ]; then"
в приведенном выше примере.
если вы можете уклониться от одиночных кавычек:
__='
blah blah comment.
'
В Vim:
shift-V
(введите визуальный режим), вверх по выделенным линиям в блоке:s/^/#/
команда будет выглядеть так:
:'<,'>s/^/#
нажмите enter
например.
shift-V
jjj
:s/^/#
<enter>
Вы можете использовать Vi/Vim Visual Block, который предназначен для таких вещей:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Uncomment будет:
Ctrl-V
Highlight #
d
l
Это интерактивный способ общения с vi, а не подсчет или чтение номеров строк.
Наконец, в Gvim вы используете ctrl-q для перехода в режим Visual Block вместо ctrl-v (потому что это ярлык для вставки).
Вариант трюка here-doc в принятом ответе sunny256 заключается в использовании ключевых слов Perl для комментариев. Если ваши комментарии на самом деле представляют собой какую-то документацию, вы можете начать использовать синтаксис Perl внутри блока комментариев, который позволяет вам распечатать его хорошо отформатированным, преобразовать его в man-страницу и т.д.
Что касается оболочки, вам нужно заменить 'END'
на '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Найдено на Вставка документации в оболочку script")
Так много переоснащения...
Я считаю очень плохой практикой писать активный код для генерации пассивного кода.
Мое решение: у большинства редакторов есть режим выбора блока. Просто используйте его, чтобы добавить # ко всем строкам, которые вы хотите прокомментировать. Какая большая сделка...
Пример блокнота:
Чтобы создать: Alt - mousedrag down, нажмите #.
Чтобы удалить: Alt-mousedrag down, shift-right arrow, delete.
Другой режим: если ваш редактор не имеет опции комментариев BLOCK,
СДЕЛАННЫЙ
это работает с любым редактором
Используйте : '
чтобы открыть и '
чтобы закрыть.
Например:
: '
This is a
very neat comment
in bash
'
Это из примера Вегаса, найденного здесь