2 Stimmen

heredoc-Abstand?

Ich weiß, das ist eine kleine Frage. Wir schreiben einen Bash-Highlighter in Ruby und müssen Folgendes implementieren heredoc Hervorhebung. Die beiden Formate, die ich gesehen habe, sind das folgende. Beachten Sie das Leerzeichen vor dem EOF

cat <<EOF
Hello
World
EOF

cat << EOF
Hello
World
EOF

Die Frage ist, ob es falsch/unzulässig/unüblich ist, ein Leerzeichen vor dem ersten EOF ?

5voto

ruakh Punkte 167025

のことです。 Spezifikation der POSIX-Shell-Befehlssprache legt ausdrücklich fest, dass die Nummer des Dateideskriptors, falls vorhanden, "unmittelbar vor dem Umleitungsoperator" stehen muss; es gibt jedoch keine ähnliche Anforderung, dass der Umleitungsoperator unmittelbar vor dem Wort stehen muss. Die Regeln für die Erkennung von Token implizieren, dass alle Leerzeichen zwischen dem Umleitungsoperator und dem Wort verworfen werden, daher denke ich, dass jede korrekte Implementierung solche Leerzeichen akzeptieren sollte. (Zugegeben, das wäre beruhigender, wenn nicht dieselben Token-Erkennungsregeln dasselbe für Leerzeichen zwischen der Dateideskriptionsnummer und dem Umleitungsoperator implizieren würden).

Obwohl die Bash-Referenzhandbuch Die Beispiele für Heredocs enthalten kein Leerzeichen vor dem Wort, aber es gibt andere Beispiele mit Weiterleitungen, die tun enthalten ein Leerzeichen vor dem Wort, und weder in der POSIX-Spezifikation noch in der Bash-Referenzhandbuch gibt keinen Anlass zu der Annahme, dass sich das Wort von heredocs in dieser Hinsicht von dem Wort in jeder anderen Art von Weiterleitung unterscheidet, so dass es meiner Meinung nach nicht als schlechte Praxis angesehen werden sollte. Ich denke, Ihr Syntax-Highlighter sollte beides unterstützen, es sei denn, eines der Ziele des Projekts ist es, eine Art Standardstil für solche Dinge durchzusetzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X