Блокировать комментарии в оболочке Script

Есть ли простой способ прокомментировать блок кода в оболочке script?

Ответ 1

В bash:

#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment

' и ' вокруг разделителя END важны, иначе вещи внутри блока, такие как, например, $(command), будут проанализированы и выполнены.

Для пояснения см. этот и this вопрос.

Ответ 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,

  1. Откройте второй экземпляр редактора (например, File => New File...)
  2. Из ПРЕДЫДУЩЕГО файла, над которым вы работаете, выберите ТОЛЬКО ЧАСТЬ, КОТОРУЮ ВЫ ХОТИТЕ
  3. Скопируйте и вставьте его в окно нового временного файла...
  4. Откройте меню "Правка", выберите "ЗАМЕНИТЬ" и введите в качестве строки для замены '\n'
  5. введите как заменяющую строку: '\n #'
  6. нажмите кнопку "заменить ВСЕ"

СДЕЛАННЫЙ

это работает с любым редактором

Ответ 11

Используйте : ' чтобы открыть и ' чтобы закрыть.

Например:

: '
This is a
very neat comment
in bash
'

Это из примера Вегаса, найденного здесь