Есть ли простой способ прокомментировать блок кода в оболочке script?
Блокировать комментарии в оболочке Script
Ответ 1
В bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
 ' и ' вокруг разделителя END важны, иначе вещи внутри блока, такие как, например, $(command), будут проанализированы и выполнены.
Ответ 2
Отсутствует комментарий блока для оболочки script.
Используя vi (да, vi), вы можете легко прокомментировать строку n до m
<ESC>
:10,100s/^/#/
(который читает, начиная с строки 10 до 100, начинать замену строки (^) знаком #.)
и un comment с помощью
<ESC>
:10,100s/^#//
(который читает, начиная с строки от 10 до 100, начинается замена строки (^), за которой следует # с примечанием //.)
 vi является почти универсальным везде, где существует /bin/sh.
Ответ 3
Вы можете использовать:
if [ 1 -eq 0 ]; then
  echo "The code that you want commented out goes here."
  echo "This echo statement will not be called."
fi
Ответ 4
Следующее должно работать для 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"
в приведенном выше примере.
Ответ 5
если вы можете уклониться от одиночных кавычек:
__='
blah blah comment.
'
Ответ 6
В Vim:
- перейти к первой строке блока, которую вы хотите прокомментировать.
-  shift-V(введите визуальный режим), вверх по выделенным линиям в блоке
-  выполните следующие действия при выборе :s/^/#/
-  команда будет выглядеть так: :'<,'>s/^/#
-  нажмите enter 
например.
shift-V
jjj
:s/^/#
<enter>
Ответ 7
Вы можете использовать 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 (потому что это ярлык для вставки).
Ответ 8
Вариант трюка 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")
Ответ 9
Так много переоснащения...
Я считаю очень плохой практикой писать активный код для генерации пассивного кода.
Мое решение: у большинства редакторов есть режим выбора блока. Просто используйте его, чтобы добавить # ко всем строкам, которые вы хотите прокомментировать. Какая большая сделка...
Пример блокнота:
Чтобы создать: Alt - mousedrag down, нажмите #.
Чтобы удалить: Alt-mousedrag down, shift-right arrow, delete.
Ответ 10
Другой режим: если ваш редактор не имеет опции комментариев BLOCK,
- Откройте второй экземпляр редактора (например, File => New File...)
- Из ПРЕДЫДУЩЕГО файла, над которым вы работаете, выберите ТОЛЬКО ЧАСТЬ, КОТОРУЮ ВЫ ХОТИТЕ
- Скопируйте и вставьте его в окно нового временного файла...
- Откройте меню "Правка", выберите "ЗАМЕНИТЬ" и введите в качестве строки для замены '\n'
- введите как заменяющую строку: '\n #'
- нажмите кнопку "заменить ВСЕ"
СДЕЛАННЫЙ
это работает с любым редактором
Ответ 11
 Используйте : ' чтобы открыть и ' чтобы закрыть.
Например:
: '
This is a
very neat comment
in bash
'
Это из примера Вегаса, найденного здесь
