So verwalten Sie die Erweiterung leerer oder nicht fester Bash -Variablen
- 2109
- 218
- Aileen Dylus
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