Czy istnieje prosty sposób na skomentowanie bloku kodu w skrypcie powłoki?Komentarze bloków w skrypcie powłoki
Odpowiedz
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)
będzie analizowany i wykonywany.
Sprytna sztuczka - o ile słowo kluczowe "KONIEC" (które oczywiście zostało wybrane przez użytkownika) nie pojawia się w osobnej linii w materiale, który ma zostać skomentowany. –
Przyjemne korzystanie z tego dokumentu :) – OscarRyz
Bardzo fajna sztuczka. BTW, powinno to działać również w dowolnej powłoce zgodnej z Bourne. –
Brak komentarza bloku do skryptu powłoki.
Korzystanie vi
(tak, vi
) można łatwo wypowiedzieć z linii n do m
<ESC>
:10,100s/^/#/
(który odczytuje z linii 10 do 100 początku linii substytut (^) z # znak.)
i un komentarz z
<ESC>
:10,100s/^#//
(który czyta, od 10 do 100 linii startu linii substytut (^), a następnie # z zauważając //.)
vi
jest niemal powszechne wszędzie tam, gdzie jest /bin/sh
.
Dobra sztuczka z regularnym wyrażeniem na vi, aby umieścić # przed liniami –
Po prostu wskazówka - jeśli używasz vima, a to kończy się podświetleniem początku każdej linii, dodaj '| noh' do końca.Rura oddziela dodatkowe polecenia i 'noh' jest dla niehighlight Podświetlanie haseł wyszukiwania zostanie automatycznie wznowione przy następnym wyszukiwaniu czegoś Przykład:': 10,100s/^/#/g | noh' – Matthew
I trzeba to zautomatyzować ze skryptu. Czy istnieje sposób na zrobienie tego w pliku z vi bez interwencji człowieka? –
W vim:
- Idź do pierwszego wiersza bloku chcesz skomentować
shift-V
(wejść w tryb wizualny), w górę w dół linii podświetleniem w bloku- wykonać następujące czynności w sprawie wyboru
:s/^/#/
polecenie będzie wyglądać następująco:
:'<,'>s/^/#
naciśnij enter
np.
shift-V
jjj
:s/^/#
<enter>
Aby odkomentować, użyj ': s/^ # /' – Buge
Sprawdź odpowiedź @ horta: https: // stackoverflow. com/a/28376319/3506015 - jest jeszcze mniej naciśnięć klawiszy! – geedoubleya
Można 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
To jest klasyczne, ale jak zauważa http://stackoverflow.com/a/19409316/832230, po prostu 'if [];' również działa. –
Być może jaśniejsze: 'if false;'. http://stackoverflow.com/a/18019516/2097284 –
To tylko wydaje się działać tylko to, że skomentowany tekst jest w rzeczywistości kodem. Występują problemy z komentarzami z rurami i średnikami. Odpowiedź Sunny256 zadziałała. – swdev
jeśli można unik apostrofów:
__='
blah blah comment.
'
Podoba mi się to. Co jednak znaczy podwójne podkreślenie? Jak najlepiej mogę powiedzieć, że jest to tylko nazwa zmiennej z konwencją, że powinna być traktowana jako prywatna? – chessofnerd
Zapewnia także podświetlanie składni w większości edytorów i można go wywoływać w razie potrzeby za pomocą $ __, chociaż sugerowałbym nazwę zmiennej, taką jak dokumentacja lub dokumenty, dla jasności. – jasonleonhard
Możesz również dodać słowo lokalne z przodu [ref here] (http://tldp.org/LDP/abs/html/localvar.html) – jasonleonhard
Poniższy powinien pracować dla sh
, bash
, ksh
i zsh
.
Bloki kodu być komentowane można umieścić wewnątrz 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
W celu Odkomentuj tak bloki kodu skomentowały, powiedzmy:
alias BEGINCOMMENT="if : ; then"
zamiast
alias BEGINCOMMENT="if [ ]; then"
w przykładzie powyżej.
Można użyć trybu Visual Zablokuj VI/VIM, który przeznaczony jest do rzeczy tak:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Odkomentuj byłoby:
Ctrl-V
Highlight #'s
d
l
To Vi interaktywny sposób prowadzenia tego rodzaju rzeczy zamiast liczyć lub czytać numery linii.
Wreszcie, w Gvim użyj ctrl-q, aby przejść do trybu bloków wizualnych zamiast ctrl-v (ponieważ jest to skrót do wklejenia).
to, a każdy nowoczesny edytor ma tryb wyboru bloku. – Rusty75
Uwielbiam tę uproszczoną metodę. : o) – geedoubleya
Odmianą tu-doc trika w zaakceptowanej odpowiedzi przez sunny256 jest użycie słów kluczowych Perl do komentarzy. Jeśli twoje komentarze są w rzeczywistości jakąś dokumentacją, możesz zacząć używać składni Perla wewnątrz skomentowanego bloku, co pozwala na wydrukowanie jej ładnie sformatowanej, przekonwertowanie jej na stronę podręcznika itp.
O ile powłoka dotyczy, wystarczy zastąpić 'END'
z '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Znalezione na "Embedding documentation in shell script")
Tyle overengineering ...
uważam za bardzo złą praktyką, aby napisać aktywny kod do generowania kodu pasywnego.
Moje rozwiązanie: większość edytorów posiada tryb wyboru bloku. Po prostu użyj go, aby dodać # do wszystkich linii, które chcesz skomentować. Co w tym wielkiego ...
Notepad przykład:
Aby utworzyć: Alt - mousedrag w dół, naciśnij #.
Aby usunąć: Alt-mousedrag w dół, shift-strzałka w prawo, usuń.
- 1. sortowanie w skrypcie powłoki
- 2. Co oznacza $ @ w skrypcie powłoki?
- 3. Zmienna automatyczna w skrypcie powłoki
- 4. Dodawanie licznika w skrypcie powłoki
- 5. Co oznacza "$$" w skrypcie powłoki?
- 6. użyciem lub w skrypcie powłoki
- 7. łańcuch konkludujący w skrypcie powłoki
- 8. tworzenie powłoki komentarze w stylu JSON
- 9. Uruchom polecenie powłoki ze zmiennej w skrypcie powłoki
- 10. W skrypcie powłoki: komendy powłoki echo, gdy są wykonywane
- 11. Prefixing logi z datą w skrypcie powłoki
- 12. Jak wykonać obliczenia daty w Skrypcie powłoki?
- 13. przekazanie argumentu zawierającego spację w skrypcie powłoki
- 14. globalne zmienne środowiskowe w skrypcie powłoki
- 15. Równoległe przetwarzanie lub wątkowanie w skrypcie powłoki
- 16. Czy czytać zmienną Pythona w skrypcie powłoki?
- 17. Zmienna aktualizacji w skrypcie powłoki TeamCity
- 18. Parsowanie JSON do tablicy w skrypcie powłoki
- 19. niepoprawny argument opcji "-resize" w skrypcie powłoki
- 20. Sprawdź dane wyjściowe polecenia w skrypcie powłoki
- 21. Mnożenie za pomocą wyrażenia w skrypcie powłoki
- 22. Jak uzyskać nazwę programu w skrypcie powłoki?
- 23. co oznacza "$?" znaczy w skrypcie powłoki?
- 24. Wcięcie wielowierszowego wyjścia w skrypcie powłoki
- 25. jak wyłączyć dyskretnie xtrace w skrypcie powłoki?
- 26. Jak wyświetlić znak tux w skrypcie powłoki?
- 27. Jak używać curl w skrypcie powłoki?
- 28. Jak zadeklarować stałą zmienną w skrypcie powłoki?
- 29. Parsowanie JSON w skrypcie powłoki z regex
- 30. Ustaw zmienną środowiskową w skrypcie powłoki/dostęp w aplikacji Tomcat
Ciekawe, jak takie łatwe i proste pytanie ma zbyt różne i skomplikowane odpowiedzi. – Sigur