Shell-Syntax: Wie verwende ich \ richtig, um Zeilen zu brechen? [duplizieren]

Diese Frage hat hier bereits eine Antwort :

Kommentare

  • Das Beispiel funktioniert für mich; Was bekommst du?
  • @JeffSchaller Entschuldigung, ich habe es klarer gemacht. Was ich meine ist, dass „\“ für einige Dinge benötigt wird, aber nicht für andere. Ich möchte nur wissen, wie man es richtig benutzt. Und aus irgendeinem Grund kann \ nicht durch das Sternchen in Kommentaren hervorgehoben werden.
  • \ ist eine explizite Fortsetzung. Bash gibt dir PS2, wenn der Befehl noch nicht abgeschlossen ist. Ist das die Verwirrung?
  • Ich ' bin mir nicht sicher, ob es sich um ein Duplikat handelt, zumindest wie im Titel angegeben. Obwohl das OP im Kontext der & & fragt, ist es immer noch allgemein genug, dass eine umfassendere Antwort gegeben werden könnte, die nicht spezifisch ist dazu.

Antwort

Wenn die Aussage ohne Fortsetzung korrekt wäre, müssen Sie \. Daher funktioniert das Folgende ohne Backslash, da Sie einen Befehl nicht mit einem && beenden können:

echo 1 && echo 2 

Hier benötigen Sie den Backslash:

echo 1 2 3 \ 4 

oder

echo 1 \ && echo 2 

Andernfalls bash würde den Befehl direkt nach der Verarbeitung der ersten Zeile ausführen, ohne auf die nächste zu warten.

Kommentare

  • Also " Fortsetzung " ist der Begriff, nach dem ich gesucht habe. Das Bash-Handbuch erklärt dies im Abschnitt „Zitate“, also habe ich das gefunden … Nun, Sie sagten, man kann ' Beenden Sie eine Zeile nicht mit && und es wird eine PS2 Eingabeaufforderung angezeigt. Was sind einige der anderen Fälle? ? Gibt es irgendwo im Bash-Handbuch eine Liste?

Antwort

Eine der Richtlinien für den Skriptstil I “ Ich bin während meines Berufslebens in einem riesigen IT-Unternehmen begegnet und habe mich verpflichtet, Nr länger als 80 Zeichen pro Zeile in einem Shellscript und Einrücken nach dem Umbrechen der Zeile. Außerdem musste ich vor einer Pipe oder & & oder || die Linie unterbrechen. Wie zum Beispiel:

command1 \ && command2 \ || command3 \ | command4 

Das Ziel war eine klare Lesbarkeit.

Kommentare

  • Das habe ich auch getan, bis jemand darauf hingewiesen hat, dass Sie das \ weglassen können, wenn Sie & &, || eingeben und | in der vorherigen Zeile: Noch bessere Lesbarkeit.
  • @ole yup Ich habe das verstanden, aber wenn es eine Richtlinie gibt, die befolgt werden muss, würde mein Code ' das nicht bestehen Überprüfen Sie, ob ich ' dies tun würde
  • +1. Ich neige dazu, den von @OleTange erwähnten Stil zu verwenden (zumindest für lange oder komplizierte Befehle) – aber der Stil, den Sie erwähnen, hat den klaren Vorteil, dass Sie sehen können, um welche Art von Fortsetzung es sich handelt, indem Sie nur die Zeile selbst betrachten, die Sie nicht verwenden ' muss nicht auch das Ende der vorherigen Zeile betrachten. Nett. Ich ' bin mir nicht sicher, ob es mir genug gefällt, um mich zu zwingen, meine Gewohnheiten zu ändern, aber ich mag es.
  • Ehrlich gesagt, ziehe ich es vor, die && und || am Zeilenanfang. Genau wie ich die Zeichen OR und AND in meine SQL WHERE-Klauseln am Zeilenanfang eingefügt habe.
  • IMO, Konsistenz hat einen enormen Vorteil. Wenn Sie in einigen Fällen ` and in other cases it is optional, I would prefer to use `überall dort verwenden MÜSSEN, wo mein Befehl in der nächsten Zeile fortgesetzt wird. Beim Scannen eines Skripts können Sie leicht übersehen, dass eine Zeile fortgesetzt wird, da sie mit && oder || oder |. (Und wie @ErikE sagt, möchte ich eigentlich meine && und || in der nächsten Zeile haben).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.