Gibt es eine einfache Möglichkeit, einen Codeblock in einem Shell-Skript zu kommentieren?
Gibt es eine einfache Möglichkeit, einen Codeblock in einem Shell-Skript zu kommentieren?
Antworten:
In Bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
Das '
und '
um das END
Trennzeichen sind wichtig, andernfalls werden Dinge innerhalb des Blocks, wie zum Beispiel $(command)
, analysiert und ausgeführt.
EOF
ist ein klassisches Beispiel (und so ist !
, ein Ausrufezeichen auf eigenem), aber man konnte verwenden SNURFLE_BURGERS
oder classical_end_marker
oder im kommentierten-out anderen Wort , das auf seinem eigenen nicht Material auf eine Linie erscheinen. Ich würde nicht gerne mit Räumen usw. experimentieren, aber das Wort könnte auch mit ihnen funktionieren.
:
) ausgeführt, der seine Eingabe nicht liest und immer mit einem erfolgreichen Wert beendet wird, und der "Kommentar" wird als Eingabe gesendet. Nicht viel dazu.
Es gibt keinen Blockkommentar zum Shell-Skript.
Mit vi
(Ja vi
) können Sie leicht von Zeile n bis m kommentieren
<ESC>
:10,100s/^/#/
(das heißt, von Zeile 10 bis 100 ersetzen Sie den Zeilenanfang (^) mit einem # -Zeichen.)
und un Kommentar mit
<ESC>
:10,100s/^#//
(das heißt, von Zeile 10 bis 100 Ersatzzeilenstart (^) gefolgt von # mit der Angabe //.)
vi
ist fast universell, wo immer es gibt /bin/sh
.
|noh
am Ende hinzu. Die Pipe trennt zusätzliche Befehle und noh
ist für Nohighlight. Die Hervorhebung von Suchbegriffen wird automatisch fortgesetzt, wenn Sie das nächste Mal nach etwas suchen. Beispiel::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
dann 0
oder auf eine andere Art zu navigieren). Dann benutze<CTRL>+V
um in den visuellen Blockmodus zu wechseln und den Anfang aller Zeilen zu markieren, die Sie kommentieren möchten (in diesem Beispiel 90 J
). Drücken Sie dann SHIFT+I
, um vor dem markierten Block einzufügen. Geben Sie das Kommentarzeichen ein (z. B. #
) und drücken Sie <ESC>
, um das Präfix zu beenden. Diese Erklärung klingt sehr lang, ist aber meiner Erfahrung nach in der Praxis viel schneller.
Sie können verwenden:
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 [ ];
auch.
if false;
. stackoverflow.com/a/18019516/2097284
Die folgende Beschreibung ist für Arbeit sh
, bash
,ksh
und zsh
.
Die zu kommentierenden Codeblöcke können eingefügt werden BEGINCOMMENT
und 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"
Das Ausführen des obigen Codes würde führen zu:
This is outside the commented block
Um Kommentar- der Codeblöcke so kommentiert, sagen wir
alias BEGINCOMMENT="if : ; then"
anstatt
alias BEGINCOMMENT="if [ ]; then"
im obigen Beispiel.
Wenn Sie den einfachen Anführungszeichen ausweichen können:
__='
blah blah comment.
'
Verwenden Sie : '
zu öffnen und '
zu schließen.
Beispielsweise:
: '
This is a
very neat comment
in bash
'
Dies ist aus Vegas Beispiel hier
In Vim:
shift-V
(in den visuellen Modus wechseln), Markierungslinien im Block nach oben und unten markieren:s/^/#/
Der Befehl sieht folgendermaßen aus:
:'<,'>s/^/#
drücke Enter
z.B
shift-V
jjj
:s/^/#
<enter>
:s/^#/
Sie können den Visual Block-Modus von Vi / Vim verwenden, der für folgende Dinge entwickelt wurde:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Kommentar wäre:
Ctrl-V
Highlight #'s
d
l
Dies ist die interaktive Methode von vi, um solche Dinge zu tun, anstatt Zeilennummern zu zählen oder zu lesen.
Schließlich verwenden Sie in Gvim Strg-Q, um in den Visual Block-Modus zu gelangen, anstatt Strg-V (da dies die Verknüpfung zum Einfügen ist).
Um ehrlich zu sein, warum so viel Überentwicklung ...
Ich halte es für eine schlechte Praxis, aktiven Code zum Generieren von passivem Code zu schreiben.
Meine Lösung: Die meisten Editoren haben den Blockauswahlmodus. Verwenden Sie es einfach, um allen Zeilen, die Sie auskommentieren möchten, # hinzuzufügen. Was ist die große Sache ...
Beispiel für einen Notizblock:
So erstellen Sie: Drücken Sie bei gedrückter Alt-Taste nach unten #.
So löschen Sie: Alt-Mousedrag nach unten, Pfeil nach rechts, Löschen.
Eine Variation des Here-Doc-Tricks in der akzeptierten Antwort von sunny256 besteht darin, die Perl-Schlüsselwörter für Kommentare zu verwenden. Wenn es sich bei Ihren Kommentaren tatsächlich um eine Art Dokumentation handelt, können Sie die Perl-Syntax im kommentierten Block verwenden, mit der Sie sie gut formatiert ausdrucken, in eine Manpage konvertieren usw. können.
Soweit die Schale betrifft, so müssen Sie nur ersetzen , 'END'
mit '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Gefunden unter " Einbetten der Dokumentation in ein Shell-Skript ")
Ein anderer Modus ist: Wenn Ihr Editor KEINE BLOCK-Kommentaroption hat,
GETAN
es funktioniert mit jedem Editor
Ich mag eine einzelne Zeile öffnen und schließen:
if [ ]; then ##
...
...
fi; ##
Das '##' hilft mir dabei, den Anfang und das Ende des Blockkommentars leicht zu finden. Ich kann eine Nummer nach dem '##' setzen, wenn ich ein paar davon habe. Um den Kommentar auszuschalten, stecke ich einfach eine '1' in das '[]'. Ich vermeide auch einige Probleme, die ich mit einfachen Anführungszeichen im kommentierten Block hatte.