ubuntuusers.de

bash script Zeichen

Status: Gelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

matze31

Anmeldungsdatum:
25. Oktober 2015

Beiträge: 788

Ich bin gerade dabei bash script zu schreiben, leider habe ich immer wieder Schwierigkeiten mit den

'
" oder `

Wenn ich Variablen werwende, oder aufrufen möchte nehme ich meist die falschen Zeichen. Gibt es irgend eine pauschale Regel in shell, wann was verwendet wird?

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ja. Benutze für den Einstieg den Bash Scripting Guide für Anfänger, da wird auch Quoting angesprochen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

Die einfachste Regel ist, dass man doppelte Anführungszeichen verwenden muss, wenn man Variablen expandiert haben will. Falls man sich sicher ist, dass in Variablen keine Shell-Sonderzeichen (z.B. Leerzeichen, Zeilenumbrüche usw.) vorkommen, kann man die Quotes auch weglassen.

Das Zeichen ` verwendet man nur, wenn man an der Stelle die Ausgabe eines Kommandos einsetzen will. Da ist aber die bessere (weil lesbarere und schachtelbare) Lösung $(...), die auch innerhalb doppelter Anführungsstrichen funktioniert.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9626

Wohnort: Münster

Bei der Verwendung einer Zeichenfolge, beispielsweise Zeichenfolge mit Leerzeichen und anderen speziellen Zeichen (:;{}#&|), besteht immer das Problem zu entscheiden, ob dies wortwörtlich (als Literal) als konstanter Wert zu verstehen ist oder ob in dieser Zeichenfolge syntaktische Elemente der Programmiersprache auftauchen und vom Programm beachtet werden sollen oder nicht. Dies kann nicht generell entschieden werden, deshalb muss der Programmierer sagen, was er meint. Ein übliches Mittel dazu sind Anführungszeichen.

Bei einer POSIX-kompatiblen Shell wie z.B. der Bash gelten folgende Regeln:

  • Eine Zeichenfolge in einfachen Anführungszeichen ('…') wird gar nicht interpretiert.

  • Ein Zeichenfolge in doppelten Anführungszeichen ("…") wird eingeschränkt interpretiert: Namen für R-Werte von Variablen (so etwas wie z.B. $1) werden durch den R-Wert (vulgo den Wert der Variablen) ersetzt und Zeichenfolgen, welche mit \ beginnen, werden durch das beschriebene Zeichen ersetzt, z.B. \n durch eine Zeilenschaltung (line feed).

  • Zeichenfolgen ohne Anführungszeichen werden analysiert, d.h. beispielsweise wird die Zeichenfolge an Leerzeichen (allgemeiner: Whitespace) getrennt und aus der Zeichenfolge wird eine Folge von (aus Sicht der Bash) atomaren Wörtern. Außerdem werden Zeichen, die für die Bash eine syntaktische Sonderbedeutung tragen interpretiert.

  • Eine Zeichenfolge in Backticks wird als Befehl ausgeführt. Zur Verbesserung der Lesbarkeit sollte man dies gar nicht verwenden, sondern durch $(…) ersetzen.

matze31

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2015

Beiträge: 788

@all Vielen Dank.

Antworten |