2013-08-21 2 views
38

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

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

Заранее спасибо.

+1

к сожалению, не в ш, Bash и Perl. –

+5

№ Комментарии могут быть выполнены только с помощью '#'. Нет комментариев с несколькими строками (например, '/ * ... * /' в php). – fedorqui

+0

Они называются «комментариями блоков», кстати, – wyu

ответ

11

Да (хотя это противный хак). Вы можете использовать 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 

, и он будет принимать весь код, содержащийся между двумя ЭОФ и кормить их echo (echo не читает из стандартного ввода, так что все это брошено далеко).

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

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

+1

Вероятно, вы хотите использовать что-то другое, кроме 'echo', или отправить echo в/dev/null. – ams

+0

Да. Команда не имеет значения.Однако я отмечаю, что на моем терминале Cygwin это эхо не читает stdin. Я подозреваю, что реализация отличается –

+0

Нет, это не * читать * что угодно, но он делает * вывод * пустую строку. «правда» может быть лучше. – ams

24

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

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

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)

0

Вы должны полагаться на «#», но чтобы облегчить задачу в VI можно выполнить следующие действия:

:10,20 s/^/# 

с 10 и 20 будучи номера строк начальных и конечных линий вы хотите закомментировать

и отменить, когда вы полный:

:10,20 s/^#// 
Смежные вопросы