Kürzlich bin ich auf einen mehrzeiligen Kommentartyp gestoßen, den ich noch nie gesehen habe - hier ist ein Skriptbeispiel:
echo a
#
: aaa
: ddd
#
echo b
Dies scheint zu funktionieren, sogar die vim
Syntax hebt es hervor. Wie heißt diese Art des Kommentierens und wie finde ich weitere Informationen dazu?
bash
shell-script
Wiesław Herr
quelle
quelle
CommentedOutBlock() { echo "test"; }
Antworten:
Das ist kein mehrzeiliger Kommentar.
#
ist ein einzeiliger Kommentar.:
(Doppelpunkt) ist überhaupt kein Kommentar, sondern ein in die Shell integrierter Befehl, der im Grunde genommen eine NOP ist , eine Nulloperation, die nichts anderes tut, als true zurückzugebentrue
(und daher$?
als Nebeneffekt auf 0 setzt). Da es sich jedoch um einen Befehl handelt, kann er Argumente akzeptieren, und da er seine Argumente ignoriert, verhält er sich in den meisten Fällen oberflächlich wie ein Kommentar. Das Hauptproblem bei diesem Trick ist, dass die Argumente immer noch erweitert werden, was zu einer Vielzahl von unbeabsichtigten Konsequenzen führt. Die Argumente sind weiterhin von Syntaxfehlern betroffen, Umleitungen werden weiterhin ausgeführt, sodass: > file
sie abgeschnitten werdenfile
, und: $(dangerous command)
Ersetzungen werden weiterhin ausgeführt.Der am wenigsten überraschende und völlig sichere Weg, Kommentare in Shell-Skripte einzufügen, ist mit
#
. Halten Sie sich auch bei mehrzeiligen Kommentaren daran. Versuchen Sie niemals , (ab):
für Kommentare zu verwenden. Es gibt keinen speziellen mehrzeiligen Kommentarmechanismus in der Shell, der der Schrägstrich-Sternform/* */
inC
ähnlichen Sprachen entspricht.Der Vollständigkeit halber, aber nicht, weil es eine empfohlene Praxis ist, möchte ich erwähnen, dass es möglich ist, hier-Dokumente zu verwenden, um mehrzeilige "Kommentare" zu machen:
quelle
<<
Zeile zu halten - das schaltet Substitution und Expansion aus.:
Dingen füllen , die Kommentare sein sollten, wird zusätzlicher RAM- / CPU-Verbrauch verursacht. Es ist für einfache Dinge auf Ihrem Desktop nicht wichtig, aber wenn es hunderte oder tausende Male pro Sekunde ausgeführt wird, werden Sie nichts tun, sehr schnell .: <<=cut
Sie POD in Shell-Skripten schreiben. Weitere Informationen finden Sie in diesem Beispiel . Dies ermöglicht die Verwendungperldoc script.sh
. Der in dieser Antwort gezeigte mehrzeilige Kommentar sollte jedoch unbedingt ein Kommentarblock sein (jede Zeile beginnt mit#
).Es ist keine Art zu kommentieren. Der
:
eingebaute Befehl macht absolut nichts; Es wird hier zum Kommentieren missbraucht.quelle
In frühen Muscheln war der Doppelpunkt die einzige Möglichkeit, Kommentare zu erstellen.
Dies ist jedoch kein echter Kommentar, da die Zeile genauso analysiert wird wie jeder andere Befehl, und dies kann Nebenwirkungen haben. Zum Beispiel:
(Manchmal wird der Doppelpunkt nur zum Aufrufen dieser Nebenwirkungen verwendet, aber dann wird er nicht als Kommentar verwendet.)
Es ist manchmal praktisch, einen Abschnitt eines Skripts mit dem Doppelpunkt zu kommentieren:
Dies ist eine große Zeitersparnis gegenüber dem Voranstellen jeder Zeile
#
, insbesondere wenn das Auskommentieren nur vorübergehend ist.quelle
/* */
und ugh, fang nicht damit an<!-- -->
!Wenn sich Ihr Kommentar am Ende des Skripts befindet, können Sie dies folgendermaßen tun:
quelle