Unix / Linux - Shell-Substitutionen

Hallo, angehende Programmierer! Heute tauchen wir in die faszinierende Welt der Shell-Substitutionen in Unix und Linux ein. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Sie durch dieses Thema schritt für schritt führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Also, lassen Sie uns gemeinsam diese aufregende Reise antreten!

Unix / Linux - Shell Substitutions

Was ist Substitution?

Bevor wir uns den Details zuwenden, lassen Sie uns verstehen, was Substitution im Kontext der Shell-Programmierung bedeutet.

Substitution ist wie ein magischer Trick in der Shell. Es ist der Ersatz eines Textteils durch einen anderen, bevor ein Befehl ausgeführt wird. Stellen Sie sich vor, Sie backen einen Kuchen und das Rezept verlangt "1 Tasse Zucker". Aber Sie haben keinen Zucker! Also entscheiden Sie sich, Honig zu verwenden. Das ist im Wesentlichen, was Substitution macht – sie ersetzt einIngredient (oder in unserem Fall, einen Textteil) durch ein anderes.

In der Shell-Programmierung haben wir drei Hauptarten der Substitution:

  1. Befehls-Substitution
  2. Variablen-Substitution
  3. Arithmetische Substitution

Wir werden uns in diesem Tutorial auf die ersten beiden konzentrieren. Fangen wir mit der Befehls-Substitution an!

Befehls-Substitution

Was ist Befehls-Substitution?

Befehls-Substitution ist eine Funktion, die es Ihnen ermöglicht, die Ausgabe eines Befehls als Argument für einen anderen Befehl zu verwenden. Es ist, als hätten Sie einen hilfreichen Assistenten, der einen Befehl für Sie ausführt und dann das Ergebnis flüsternd an Ihr Ohr flüstert, das Sie dann in Ihrem Hauptbefehl verwenden können.

Wie führt man eine Befehls-Substitution durch?

Es gibt zwei Möglichkeiten, eine Befehls-Substitution durchzuführen:

  1. Verwenden von Backticks (`)
  2. Verwenden der Syntax $() (bevorzugte Methode)

Schauen wir uns einige Beispiele an, um dies besser zu verstehen.

Beispiel 1: Verwenden von Backticks

current_date=`date`
echo "Heutiges Datum ist: $current_date"

Wenn Sie dieses Skript ausführen, wird es etwas wie folgendes ausgeben:

Heutiges Datum ist: Mon May 15 10:30:45 EDT 2023

Was ist hier passiert? Die Shell hat den date-Befehl ausgeführt, seine Ausgabe erfasst und dann diese Ausgabe als Wert für die Variable current_date verwendet.

Beispiel 2: Verwenden der $()-Syntax

files_count=$(ls | wc -l)
echo "Es gibt $files_count Dateien im aktuellen Verzeichnis."

Dieses Skript wird die Anzahl der Dateien im aktuellen Verzeichnis zählen und etwas wie folgendes ausgeben:

Es gibt 15 Dateien im aktuellen Verzeichnis.

In diesem Beispiel führt die Shell zuerst den ls-Befehl aus, um alle Dateien zu listen, leitet diese Ausgabe an wc -l weiter, um die Zeilen zu zählen, und weist das Ergebnis der Variable files_count zu.

Warum verwendet man Befehls-Substitution?

Befehls-Substitution ist unglaublich nützlich, wenn Sie die Ausgabe eines Befehls als Teil eines anderen Befehls oder zur Zuweisung an eine Variable verwenden müssen. Es ist wie ein Schweizer Army Knife in Ihrem Programmierwerkzeugkasten!

Variablen-Substitution

Nun geht's weiter zur Variablen-Substitution. Dies ist eine weitere leistungsstarke Funktion, die es Ihnen ermöglicht, den Wert einer Variablen in Ihren Skripten zu verwenden.

Was ist Variablen-Substitution?

Variablen-Substitution ist, wenn die Shell einen Variablennamen durch seinen Wert ersetzt. Es ist wie ein Spitzname für jemanden – wenn Sie seinen Spitznamen verwenden, weiß jeder, dass Sie auf diese Person Bezug nehmen.

Wie führt man eine Variablen-Substitution durch?

Um eine Variablen-Substitution durchzuführen, verwenden Sie den Variablennamen, vorangestellt von einem Dollarzeichen ($).

Beispiel 1: Grundlegende Variablen-Substitution

name="Alice"
echo "Hallo, $name!"

Ausgabe:

Hallo, Alice!

Hier hat die Shell $name durch seinen Wert, "Alice", ersetzt.

Beispiel 2: Verwenden von Klammern

Manchmal müssen Sie Klammern {} verwenden, um klar zu definieren, wo der Variablenname endet.

fruit="apple"
echo "Ich mag ${fruit}s"

Ausgabe:

Ich mag apples

Ohne die Klammern würde die Shell nach einer Variable namens fruits suchen, die nicht existiert.

Fortgeschrittene Variablen-Substitutions-Techniken

Schauen wir uns einige fortgeschrittene Techniken an:

1. Standardwerte

Sie können einen Standardwert für eine Variable angeben, wenn sie nicht gesetzt ist:

echo "Hallo, ${name:-Welt}!"

Wenn name nicht gesetzt ist, wird ausgegeben:

Hallo, Welt!

2. Zuweisen eines Standardwertes

Sie können einen Standardwert zuweisen, wenn die Variable nicht gesetzt ist:

echo "Hallo, ${name:=Welt}!"
echo $name

Ausgabe:

Hallo, Welt!
Welt

3. Anzeige eines Fehlers, wenn nicht gesetzt

Sie können eine Fehlermeldung anzeigen, wenn eine Variable nicht gesetzt ist:

echo "Hallo, ${name:?'Name ist nicht gesetzt'}"

Wenn name nicht gesetzt ist, wird eine Fehlermeldung angezeigt:

bash: name: Name ist nicht gesetzt

Hier ist eine Tabelle, die diese fortgeschrittenen Techniken zusammenfasst:

Syntax Beschreibung Beispiel
${var:-word} Wenn var null oder nicht gesetzt ist, wird word ersetzt. ${name:-Welt}
${var:=word} Wenn var null oder nicht gesetzt ist, wird var auf word gesetzt. ${name:=Welt}
${var:?message} Wenn var null oder nicht gesetzt ist, wird die Nachricht in die Fehlerausgabe gedruckt. ${name:?'Name ist nicht gesetzt'}
${var:+word} Wenn var gesetzt ist, wird word ersetzt. Andernfalls wird nichts ersetzt. ${name:+Hallo}

Erinnern Sie sich daran, Übung macht den Meister! Haben Sie keine Angst, diese Substitutionen in Ihren eigenen Skripten auszuprobieren. Es ist wie das Fahrradfahren zu lernen – es mag am Anfang schwierig erscheinen, aber wenn Sie den Dreh raus haben, werden Sie in Windeseile dahinfliegen!

Zusammenfassend sind Shell-Substitutionen leistungsstarke Werkzeuge, die Ihre Skripte dynamischer und flexibler machen. Sie ermöglichen es Ihnen, die Ausgabe von Befehlen und die Werte von Variablen auf kreative Weise zu verwenden. Während Sie Ihre Reise im Shell-Programmieren fortsetzen, werden Sie diese Techniken immer öfter einsetzen.

Frohes Coden und denken Sie daran – in der Welt des Programmierens ist Neugier Ihr bester Freund!

Credits: Image by storyset