So verwalten Sie die Erweiterung leerer oder nicht fester Bash -Variablen

So verwalten Sie die Erweiterung leerer oder nicht fester Bash -Variablen

Zielsetzung

Das Objekt dieses Tutorials ist es, zu lernen, wie man das Bash -Verhalten ändert.

Anforderungen

  • Es sind keine speziellen Systemberechtigungen erforderlich, um diesem Tutorial zu folgen

Einführung

Die Variablenerweiterung ist eine der häufigsten Merkmale in der Schale: Wenn eine Variable existiert und Teil eines Befehls ist, wird sie „erweitert“, so dass durch ihren Wert ersetzt wird. Die Erweiterung leerer Variablen ist eines dieser Dinge, die, wenn nicht gut verwaltet, ernsthaft beschädigt werden kann: Stellen Sie sich einen Befehl wie diesen vor:

$ sudo rm -rf "/$ dir"

In einem Fall wie diesem, wenn das $ dir Variable ist leer oder nicht festgelegt, seine Erweiterung würde keinen Wert erzeugen, daher wäre der tatsächliche ausgeführte Befehl:

$ sudo rm -rf /

Unser System wäre zum Scheitern verurteilt. Handel oder besser verhindern, dass eine solche Situation von entscheidender Bedeutung ist. In diesem Tutorial werden wir sehen, wie die Erweiterung leerer Variablen mithilfe einer bash -spezifischen Syntax verwaltet wird.



Verwenden Sie einen Standardwert, wenn eine Variable leer oder nicht festgelegt ist

Der erste Fall, den wir berücksichtigen. Angenommen, wir verweisen auf den Nicht existierenden $ Farbe Variable als Teil des folgenden Befehls:

$ echo "Der Himmel ist $ color"

Das Ergebnis dieses Befehls wäre:

der Himmel ist

Da die Variable nicht festgelegt ist, resultiert nichts aus ihrer Expansion, was uns mit einem unvollendeten Satz (und einem Himmel ohne Farbe) zurücklässt. Natürlich kein wirklicher Schaden in diesem Fall, aber wie könnten wir die Shell anweisen, in einem solchen Fall einen Standardwert zu verwenden?

Es gibt eine Syntax, die speziell entwickelt wurde, um dieses Verhalten zu erhalten, und es ist sehr einfach:

$ Parameter: -Word

So funktioniert es:

$ echo "Der Himmel ist $ Farbe:" Blue "" Der Himmel ist blau 

Wenn Sie diese Syntax verwenden, wenn Parameter existiert nicht oder ist leer, die Erweiterung führt zum Wert von Wort. In diesem Fall die Variable $ Farbe wurde nicht eingestellt, daher wurde die Hülle als Ergebnis der Expansion „blau“ verwendet.

Es ist erwähnenswert, dass auch wenn die Erweiterung zu dem als „Standard“ angegebenen Wert mit dieser Syntax nach der Ausdehnung führte, die $ Farbe Die Variable ist immer noch nicht festgelegt:

$ echo "$ color" 

Verwenden und weisen Sie auch einen neuen Wert zu, wenn eine Variable leer ist oder nicht festgelegt ist

Der obige Befehl gab keine Ausgabe zurück, da die Variable zu diesem Zeitpunkt noch nicht eingestellt war. Was ist, wenn wir einen bestimmten Wert verwenden möchten, wenn wir eine unbegründete oder leere Variable erweitern, aber auch diesen Wert der Variablen nach der Ausdehnung zuweisen? Eine etwas andere Syntax lässt uns das erreichen, was wir wollen:

$ Parameter: = Wort

Sehen wir uns ein Beispiel an, in dem diese Syntax verwendet wird:

$ echo "Der Himmel ist $ Farbe: =" blau "" Der Himmel ist blau 

Genau wie zuvor passiert, Wort wurde seitdem in der Expansion verwendet Parameter (Die $ Farbe Variable) wurde nicht festgelegt. Zusätzlich, Wort, („Blau“ in diesem Fall) wurde ebenfalls als Wert für die zuvor nicht festgelegte Variable zugewiesen. Zu überprüfen, dass es sehr einfach ist:

$ "Der Himmel ist $ color" Der Himmel ist blau 

Sehen? Die Erweiterung der $ Farbe Variable führt jetzt zu "blau".



Verwenden Sie einen alternativen Wert, wenn eine Variable festgelegt ist

Eine etwas andere Syntax lässt uns ein gleiches Ergebnis erzielen. Hier ist es:

Parameter:+Word

Wie ändert es das Verhalten der Shell?? Wenn diese Syntax verwendet wird, wenn Parameter ist leer oder nicht eingestellt, Wort Wille nicht verwendet werden, daher ist die Erweiterung leer. Wenn die Variable stattdessen einen Wert hat, ist das Ergebnis der Erweiterung Wort, und der Wert von Parameter wird nicht geändert. Lassen Sie uns dies mit einigen Beispielen verdeutlichen:

Erster Fall. Die Variable $ Farbe ist nicht festgelegt, daher wird das Ergebnis der Expansion nichts sein:

$ echo "Der Himmel ist $ Farbe:+" blau "" Der Himmel ist 

Zweiter Fall. Die Variable $ Farbe hat einen Wert: Die Erweiterung führt zu dem Wert des Rechts von rechts von :+, aber der Wert der $ Farbe Variable wird nicht geändert:

# Weisen Sie der Variablen "Farbe" einen Wert zu, da die Variable festgelegt ist. Das Ergebnis der Erweiterung ist "blau" $ echo "Der Himmel ist $ color:+" blau "" Die Sky ist blau # Der Wert der Variablen "Farbe" wurde nicht verändert $ echo "$ color" rot 
Kopieren

Zeigen Sie eine Fehlermeldung an, wenn eine Variable leer oder nicht festgelegt ist

Die letzte Art von Syntax, die wir hier untersuchen werden, ist:

$ Parameter:?Wort

Wenn Sie diese Syntax verwenden, wenn Parameter ist nicht eingestellt oder leer, das Skript beendet mit einem Fehler beendet. Zusätzlich, Wort wird an gesendet an Stderr (Standart Fehler). Um dieses Beispiel willen, betrachten Sie die Variable „Farb“ als uneingeschränkt wie zuvor:

# Die von uns angegebene Nachricht wird auf Standardfehler $ echo angezeigt. "Der Himmel ist $ Farbe:?"Farbe nicht gesetzt" "Bash: Farbe: Farbe nicht gesetzt 
Kopieren

Der Befehl mit einem Fehler und dem verliehen Farbe nicht gesetzt Meldung wurde angezeigt. Falls die Variable festgelegt wurde, wäre das Ergebnis der Expansion ihr eigener Wert:

$ color = "blau" $ echo "Der Himmel ist $ Farbe:?"Farbe Not Set" "Der Himmel ist blau 
Kopieren

Verwandte Linux -Tutorials:

  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • Spezielle Bash -Variablen mit Beispielen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Bash Scripting: Überprüfen Sie, ob ein Verzeichnis besteht
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • Wie man die Bash -Geschichte verwaltet
  • Ubuntu 20.04 Leitfaden