So verwenden Sie $ und $ {} Erweiterungen in einem Shell -Skript

So verwenden Sie $ und $ {} Erweiterungen in einem Shell -Skript
Wenn Sie ein Linux -System verwenden, wissen Sie möglicherweise bereits, wie wichtig eine Shell -Schnittstelle für die Interaktion mit Ihrem System ist. Bei den meisten Linux -Verteilungen ist Bash die Standard -Shell, mit der wir Befehle ausführen und Skripts ausführen können. Ein Shell -Skript ist eine Reihe von Befehlen, die bei der Ausführung verwendet werden, um einige nützliche Funktionen unter Linux auszuführen. Das .Die von einem Benutzer geschriebene SH -Datei enthält alle Befehle, die zur Ausführung einer Aufgabe verwendet werden, damit wir diese Befehle nicht nacheinander manuell ausführen müssen.

In diesem Tutorial erklären wir zwei der nützlichsten Bash -Erweiterungen, die in Shell -Skripten verwendet werden:

  • $ () - die Befehlssubstitution
  • $ - die Parametersubstitution/variable Erweiterung

Eine Expansion in Shell wird im Skript durchgeführt, nachdem es in Token aufgeteilt wurde. Ein Token ist eine Abfolge von Zeichen, die von der Schale als einzelne Einheit angesehen werden. Es kann entweder ein Wort oder ein Bediener sein.

Wir haben alle Beispiele und Skripte ausgeführt, die in diesem Artikel auf einem Debian 10 Buster -System erwähnt wurden. Sie können sie jedoch leicht auf den meisten Linux -Shells replizieren. Wir verwenden die Standard -Debian -Befehlszeile des Terminals für dieses Tutorial. Auf Debian können Sie wie folgt über die Anwendungsstart -Suchleiste darauf zugreifen:

Um auf den Anwendungsstarcher zuzugreifen, klicken Sie einfach auf die Taste Super/Windows auf Ihrer Tastatur.

$ () Befehlssubstitution

Nach dem offiziellen GNU -Bash -Referenzhandbuch:

„Die Befehlssubstitution ermöglicht die Ausgabe eines Befehls, den Befehl selbst zu ersetzen. Bash führt die Erweiterung durch, indem der Befehl ausgeführt wird und die Befehlssubstitution durch die Standardausgabe des Befehls ersetzt wird, wobei alle nachverfolgenden Newlines gelöscht wurden. Eingebettete Newlines werden nicht gelöscht, können jedoch während der Wortaufteilung entfernt werden.” Befehlssubstitution tritt auf, wenn ein Befehl wie folgt eingeschlossen ist:

$ (Befehl)
oder
'Befehl'

Beispielsweise ersetzen die folgenden Echo -Befehle die Ausgabe des Datumsbefehls als Eingabe:

$ echo $ (Datum)
$ echo 'Datum'

Sie können auch die Befehlssubstitution verwenden, um einer Variablen Wert zuzuweisen. Zum Beispiel werden wir das heutige Datum heute wie folgt durch die Variable drucken:

$ Heute = $ (Datum)
$ echo "$ heute"

Ein weiterer Nutzen der Befehlssubstitution ist in Shell Loops, um Eingaben zu erhalten. Hier werden wir versuchen, alle zu drucken .TXT -Dateien in unserem Home -Ordner mit Befehlssubstitution:

für f in/home/sana/*.txt
Tun
echo "$ f"
Erledigt

Verwenden der Befehlssubstitution in einem Shell -Skript

Die obigen Beispiele sind einige Möglichkeiten, wie Sie die Kraft der Befehlssubstitution in Ihrem Shell -Skript nutzen können. Hier ist ein Beispielstatusbericht, den wir mit dem folgenden Shell -Skript drucken können:

#!/bin/sh
Echo *** Statusbericht ***
Heute = $ (Datum)
echo "heute ist heute $"
Benutzer = $ (WHO | WC -L)
echo "$ user user sind derzeit angemeldet" "
UPTIME = $ (Datum; Verfügungen)
echo "Die Verfügbarkeit ist $ optimal"

Befehlssubstitution wurde dreimal in diesem Skript verwendet. Beim Drucken des Datums, angemeldet bei Benutzern und Verfügbarkeit. Wir haben das Skript wie folgt gespeichert:

Machte es ausführbar und führte es dann durch den folgenden Befehl:

$ chmod +x Status.Sch
$ ./Statys.Sch

Hier ist die Ausgabe unseres Status.SH Skript:

Sie können natürlich sinnvollere Skripte erstellen, indem Sie den gerade erwähnten Beispielen folgen.

$ Parametersubstitution/Expansion

Ein Parameter in Bash ist eine Entität, die zum Speichern von Werten verwendet wird. Ein Parameter kann durch eine Nummer, einen Namen oder durch ein spezielles Symbol verwiesen werden. Wenn ein Parameter durch eine Nummer verwiesen wird, wird er a genannt Positionsparameter. Wenn ein Parameter mit einem Namen verwiesen wird, wird er a genannt Variable. Wenn ein Parameter durch ein spezielles Symbol referenziert wird, bedeutet dies, dass es sich um Autoset -Parameter mit speziellen Verwendungen handelt.

Parametererweiterung/Substitution ist der Prozess des Abholens des Wertes aus der referenzierten Entität/Parameter. Es ist, als würden Sie eine Variable erweitern, um ihren Wert zu holen.

Die einfachste mögliche Parameterausdehnungssyntax ist die folgende:

So können Sie die Parameterausdehnung in Bash verwenden:

$ Parameter

Beispielsweise besteht die einfachste Verwendung darin, den Parameter durch seinen Wert zu ersetzen:

$ name = "John Doe"
$ echo "$ name"

Dieser Befehl ersetzt den Wert der Variablen „Namen“, die vom ECHO -Befehl verwendet werden soll:

Sie denken vielleicht, dass dasselbe erreicht werden kann, indem die lockigen Klammern wie folgt vermieden werden:

Die Antwort ist, dass diese lockigen Klammern während der Parameterausdehnung dazu beitragen, den variablen Namen abzugrenzen. Lassen Sie uns erklären, was wir mit begrenztem Grenzen meinen. Lassen Sie mich den folgenden Befehl in meinem System ausführen:

$ echo "Der Name der Person ist $ name_"

Das Ergebnis druckte den Wert des Variablennamens nicht, da das System glaubte, ich bezog mich auf die Variable "name_". Somit war mein variabler Name nicht „abgrenzt“. Die lockigen Zahnspangen im folgenden Beispiel werden den variablen Namen abgrenzen und die Ergebnisse wie folgt zurückgeben:

$ echo "Der Name der Person ist $ Name _"

Hier sind alle Möglichkeiten, wie Variablen in Shell ersetzt werden:

$ variable Dieser Befehl ersetzt den Wert der Variablen.
$ Variable: -Word Wenn eine Variable null ist oder wenn sie nicht festgelegt ist. Der Wert der Variablen ändert sich nicht.
$ variable: = word Wenn eine Variable null ist oder wenn sie nicht festgelegt ist, wird der Wert der Variablen auf WORD eingestellt.
$ Variable:?Nachricht Wenn eine Variable null ist oder wenn sie nicht festgelegt ist, wird die Nachricht auf den Standard -Bash -Fehler gedruckt.
$ Variable:+Word Wenn Variable ist gesetzt, Wort wird durch variable ersetzt. Der Wert der Variablen selbst ändert sich jedoch nicht.

Die obigen Beispiele sind einige Möglichkeiten, wie Sie die Leistung variabler Substitution in Bash nutzen können. Sie können diese Möglichkeiten einbeziehen, um die Erweiterung in Ihren Shell -Skripten zu verwenden, um Ihre Aufgabe optimal zu erreichen.