Подтвердить что ты не робот

Как закомментировать определенные строки в сценарии оболочки

Может кто-нибудь предложить, как комментировать определенные строки в сценарии оболочки, кроме #?

Предположим, я хочу прокомментировать пять строк. Вместо добавления # к каждой строке, есть ли другой способ комментировать пять строк?

4b9b3361

Ответ 1

Вы можете прокомментировать раздел script с помощью условного.

Например, следующий script:

DEBUG=false
if ${DEBUG}; then
echo 1
echo 2
echo 3
echo 4
echo 5
fi
echo 6
echo 7

выводит:

6
7

Чтобы раскомментировать раздел кода, вам просто нужно прокомментировать переменную:

#DEBUG=false

(Это приведет к печати чисел с 1 по 7.)

Ответ 2

Да (хотя это неприятный хак). Вы можете использовать heredoc таким образом:

#!/bin/sh

# do valuable stuff here
touch /tmp/a

# now comment out all the stuff below up to the EOF
echo <<EOF
...
...
...
EOF

Что это делает? A heredoc передает все следующие данные до терминатора (в данном случае EOF) в назначенную команду. Таким образом, вы можете окружать код, который вы хотите прокомментировать, с помощью

echo <<EOF
...
EOF

и он возьмет весь код, содержащийся между двумя EOF, и отправит их в echo (echo не читает из stdin, поэтому все это отбрасывается).

Обратите внимание, что с вышесказанным вы можете поместить что-нибудь в heredoc. Он не должен быть действительным кодом оболочки (т.е. Он не должен правильно разбираться).

Это очень неприятно, и я предлагаю его только как точку интереса. Вы не можете сделать эквивалент C /* ... */

Ответ 3

Вы должны полагаться на '#', но чтобы упростить задачу в vi, вы можете выполнить следующее (сначала нажмите escape):

:10,20 s/^/#

10 и 20 - номера строк в начале и конце строк, которые вы хотите закомментировать

и отменить, когда вы закончите:

:10,20 s/^#//

Ответ 4

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