Czy istnieje prosty sposób skomentowania bloku kodu w skrypcie powłoki?
Czy istnieje prosty sposób skomentowania bloku kodu w skrypcie powłoki?
Odpowiedzi:
W bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
I '
wokół END
separatora są ważne, inaczej rzeczy wewnątrz bloku jak na przykład $(command)
zostanie rozpoznany i wykonany.
EOF
jest klasycznym przykładem (i tak jest !
, wykrzyknik na własną rękę), ale można użyć SNURFLE_BURGERS
albo classical_end_marker
ani żadnego innego słowa, które nie pojawiają się na linii na własną rękę w zakomentowanych materiału. Byłbym obrzydliwy w eksperymentowaniu ze spacjami itp., Ale słowo to równie dobrze może z nimi współpracować.
:
), które nie odczytuje danych wejściowych i zawsze kończy działanie z udaną wartością, i wysyła „komentarz” jako dane wejściowe. Niewiele.
Nie ma komentarza blokowego do skryptu powłoki.
Używając vi
(tak, vi
) możesz łatwo komentować od linii n do m
<ESC>
:10,100s/^/#/
(który brzmi: od linii 10 do 100 zamień początek linii (^) znakiem #).
i un komentarz z
<ESC>
:10,100s/^#//
(który brzmi: od linii 10 do 100 początek linii zastępczej (^), po której następuje # z zaznaczeniem //.)
vi
jest prawie uniwersalny wszędzie tam, gdzie jest /bin/sh
.
|noh
do końca. Rura oddziela dodatkowe polecenia i noh
nie nadaje się do podświetlenia. Podświetlanie wyszukiwanego terminu zostanie automatycznie wznowione przy następnym wyszukiwaniu czegoś. Przykład::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
wtedy 0
lub w inny sposób, aby nawigować). Następnie użyj, <CTRL>+V
aby przejść do trybu blokowania wizualnego i wyróżnić początek wszystkich linii, które chcesz skomentować (w tym przykładzie 90 J
). Następnie naciśnij, SHIFT+I
aby wstawić przed podświetlonym blokiem. Wpisz znak komentarza (np. #
) I naciśnij, <ESC>
aby zakończyć prefiks. Wyjaśnienie to brzmi bardzo długo, ale z mojego doświadczenia wynika, że w praktyce jest ono znacznie szybsze.
Możesz użyć:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];
działa.
if false;
. stackoverflow.com/a/18019516/2097284
Poniższa powinien pracować sh
, bash
, ksh
i zsh
.
Bloki kodu, które mają zostać skomentowane, można umieścić w środku BEGINCOMMENT
i 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"
Wykonanie powyższego kodu spowoduje:
This is outside the commented block
Aby odkomentować bloki kodu skomentowane, powiedzmy
alias BEGINCOMMENT="if : ; then"
zamiast
alias BEGINCOMMENT="if [ ]; then"
w powyższym przykładzie.
jeśli potrafisz uniknąć pojedynczych cudzysłowów:
__='
blah blah comment.
'
Użyj, : '
aby otworzyć i '
zamknąć.
Na przykład:
: '
This is a
very neat comment
in bash
'
To jest przykład Vegas tutaj
W Vimie:
shift-V
(wejdź w tryb wizualny), w górę w dół zaznacz linie w bloku:s/^/#/
polecenie będzie wyglądać następująco:
:'<,'>s/^/#
wciśnij Enter
na przykład
shift-V
jjj
:s/^/#
<enter>
:s/^#/
Możesz użyć trybu Visual Block Vi / Vima, który jest przeznaczony do takich rzeczy:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Odkomentowanie to:
Ctrl-V
Highlight #'s
d
l
Jest to interaktywny sposób vi wykonywania tego rodzaju rzeczy, zamiast liczenia lub odczytywania numerów linii.
Wreszcie, w Gvim używasz ctrl-q, aby przejść do trybu Visual Block, a nie ctrl-v (ponieważ jest to skrót do wklejania).
Szczerze mówiąc, dlaczego tak dużo nadinżynierii ...
Uważam, że pisanie aktywnego kodu do generowania kodu pasywnego jest złą praktyką.
Moje rozwiązanie: większość redaktorów ma tryb wyboru bloku. Po prostu użyj go, aby dodać # do wszystkich linii, które chcesz skomentować. O co tyle szumu...
Przykład Notatnika:
Aby utworzyć: Alt - przesunięcie w dół, naciśnij #.
Aby usunąć: Alt-mousedrag w dół, strzałka Shift-prawa, usuń.
Wariacją sztuczki tutaj-doc w zaakceptowanej odpowiedzi przez sunny256 jest użycie słów kluczowych Perl do komentowania. Jeśli twoje komentarze są w rzeczywistości dokumentacją, możesz zacząć korzystać ze składni Perla wewnątrz skomentowanego bloku, co pozwala wydrukować go ładnie sformatowanego, przekonwertować na stronę podręcznika itp.
O ile powłoka jest zaniepokojony, trzeba tylko zamienić 'END'
z '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Znaleziono w „ Osadzanie dokumentacji w skrypcie powłoki ”)
Innym trybem jest: jeśli Twój komentarz edytora NIE MA BLOKU komentarza,
GOTOWE
Działa z DOWOLNYM edytorem
Lubię jedną linię otwierającą i zamykającą:
if [ ]; then ##
...
...
fi; ##
„##” pomaga mi łatwo znaleźć początek i koniec komentarza do bloku. Mogę nakleić cyfrę po „##”, jeśli mam ich kilka. Aby wyłączyć komentarz, po prostu wstawiam „1” w „[]”. Unikam też niektórych problemów z pojedynczymi cudzysłowami w komentarzowym bloku.