Ich habe vor kurzem angefangen, Shell-Skripte zu studieren, und ich möchte in der Lage sein, eine Reihe von Zeilen in einem Shell-Skript zu kommentieren. Ich meine, wie es im Fall von C / Java ist:
/* comment1
comment2
comment3
*/`
Wie könnte ich das machen?
:
in der ersten Spalte (keine führenden Leerzeichen) in der Zeile befindet.Antworten:
Verwenden Sie
: '
zu öffnen und'
zu schließen.Beispielsweise:
quelle
#
:
ist eine Abkürzung fürtrue
undtrue
verarbeitet keine Parameter. (Handbuchseite:SYNOPSIS true [ignored command line arguments]
:
und'
ist wichtig# '
in der letzten Zeile anstelle des einfachen Anführungszeichens zu verwenden. Auf diese Weise kann ich eine einzelne#
in die erste Zeile setzen, um den Codeblock zu aktivieren. Entfernen Sie die#
erste Zeile, um den Code zu deaktivieren.Mehrzeiliger Kommentar in Bash
quelle
:
ist nicht notwendig. Beginnen Sie einfach mit<<
.Ich aktualisiere diesen Beitrag basierend auf Kommentaren und anderen Antworten, sodass Kommentare vor dem 22. Mai 2020 möglicherweise nicht mehr zutreffen.
Bash bietet keine integrierte Syntax für mehrzeilige Kommentare, aber es gibt Hacks, die die vorhandene Bash-Syntax verwenden und "zufällig jetzt funktionieren".
Persönlich denke ich, dass das Einfachste (dh am wenigsten laut, am wenigsten seltsam, am einfachsten zu tippen, am explizitesten) darin besteht, ein zitiertes HEREDOC zu verwenden, aber machen Sie deutlich, was Sie tun, und verwenden Sie überall denselben HEREDOC-Marker:
Durch einfaches Zitieren des HEREDOC-Markers werden einige Nebenwirkungen des Shell-Parsing vermieden, z. B. seltsame Unterteilungen, die zum Absturz oder zur Ausgabe führen würden, und sogar das Parsen des Markers selbst. Die einfachen Anführungszeichen geben Ihnen also mehr Freiheit beim Öffnen und Schließen von Kommentaren. Im Folgenden wird beispielsweise ein dreifacher Hash verwendet, der einen mehrzeiligen Kommentar in Bash vorschlägt. Dies würde das Skript zum Absturz bringen, wenn die einfachen Anführungszeichen fehlen würden. Selbst wenn Sie das Skript entfernen
###
,FOO{}
stürzt das Skript ab (oder es wird eine schlechte Substitution gedruckt, wenn neinset -e
), wenn die einfachen Anführungszeichen nicht vorhanden wären:Sie könnten natürlich einfach verwenden
Aber die Absicht davon ist einem Leser, der mit diesem Trick nicht vertraut ist, definitiv weniger klar.
Heutzutage können Sie in jedem guten Editor Strg- / oder ähnliches drücken, um die Auswahl aufzuheben / zu kommentieren. Jeder versteht das definitiv:
Obwohl dies zugegebenermaßen nicht annähernd so praktisch ist wie der obige Blockkommentar, wenn Sie Ihre Absätze neu füllen möchten.
Es gibt sicherlich andere Techniken, aber es scheint keinen "konventionellen" Weg zu geben, dies zu tun. Es wäre schön, wenn
###>
und###<
könnte zu Bash hinzugefügt werden, um den Beginn und das Ende des Kommentarblocks anzuzeigen, scheint ziemlich einfach zu sein.quelle
true
), dann auch dann, wenn sie dies nicht tun Ich riskiere nicht zu brechen (Heredoc-Ansatz nicht, aber Doppelpunktversion). 1) Hacks verschleiern immer noch die Absicht: Ohne die erste Zeile, die auf mehrzeilige Kommentare hinweist, würden sich die meisten am Kopf kratzen und sich fragen, was dieser Code tut. und 2) unerwartete dunkle Ecken haben (wie das Verdoppeln eines Zitats, das Zitieren des Heredoc-Markers in bestimmten Fällen usw.).${FOO:=bar}
oder eingebettet${FOO{}}
. Der erste kann den Nebeneffekt haben, die Variable zu erstellen und festzulegenFOO
, der zweite führt zu einem fehlerhaften Substitutionsfehler . Beide Effekte würden Sie von einem echten Kommentar nicht erwarten.Nachdem ich die anderen Antworten hier gelesen hatte, kam ich auf das Folgende, was meiner Meinung nach wirklich klar macht, dass es sich um einen Kommentar handelt. Besonders geeignet für Informationen zur Verwendung im Skript:
Als Programmierer wird die Folge von Schrägstrichen sofort in meinem Gehirn als Kommentar registriert (obwohl Schrägstriche normalerweise für Zeilenkommentare verwendet werden).
Natürlich
"////"
ist nur eine Zeichenfolge; Die Anzahl der Schrägstriche im Präfix und im Suffix muss gleich sein.quelle
Usage:
<< EOF ... EOF
Was ist deine Meinung dazu?
quelle
Hier ist, wie ich mehrzeilige Kommentare in Bash mache.
Dieser Mechanismus hat zwei Vorteile, die ich schätze. Zum einen können Kommentare verschachtelt werden. Das andere ist, dass Blöcke aktiviert werden können, indem einfach die initiierende Zeile auskommentiert wird.
Im obigen Beispiel ist der "B" -Block auskommentiert, aber die Teile des "A" -Blocks, die nicht der "B" -Block sind, werden nicht auskommentiert.
Wenn Sie dieses Beispiel ausführen, wird folgende Ausgabe erstellt:
quelle
Ich habe die gewählte Antwort ausprobiert, aber als ich ein Shell-Skript mit diesem Skript ausführte, wurde das Ganze auf dem Bildschirm gedruckt (ähnlich wie Jupiter-Notizbücher alles in
'''xx'''
Anführungszeichen drucken ), und am Ende wurde eine Fehlermeldung angezeigt . Es tat nichts, aber: beängstigend . Dann wurde mir beim Bearbeiten klar, dass einfache Anführungszeichen mehrere Zeilen umfassen können. Also .. lassen Sie uns einfach den Block einer Variablen zuweisen.quelle
x=
durch a:
und Sie haben den gleichen Effekt ohne Nebenwirkungen. Der einzige Nachteil ist, dass der Kommentar dann kein einziges Anführungszeichen enthalten darf. Deshalb bevorzuge ich die Verwendung eines zitierten Heredocs: Damit kann der Kommentator eine geeignete Terminierungszeichenfolge auswählen, wie er möchte.Einfache Lösung, nicht viel klug:
Blockieren Sie vorübergehend einen Teil eines Skripts:
Eine etwas raffinierte Version:
quelle
# Ich mag Faulheit und Einfachheit. Ich würde # mit einer lustigen Problemumgehung verwenden:
1 DRÜCKEN SIE:] find Strg + F oder cmd + F oder was auch immer [um die Suchfunktion auszulösen
2 Verwenden Sie im Suchfeld einen regulären Ausdruck wie:
(^.+)
3 ersetzen durch:
# $1
oder wenn Sie es vorziehen#$1
# Hinweis: Möglicherweise haben Sie die drei Schritte nicht in Ihrem Editor. Verwenden Sie in diesem Fall ein Online-Regex-Tool (aus politischen Gründen kann hier kein Tool vorgeschlagen werden):
(^.+)
als Regex und /#$1
oder#\1
als Substitutionsmuster# Genieße deine Hashes!
quelle
ctrl+/
dem Kommentare auch für mehrere Zeilen ein- oder ausgeschaltet werden können. Es ist auch in der Lage, das Kommentarzeichen basierend auf der von Ihnen verwendeten Sprache zu ändern.