GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ungewöhnliche Möglichkeiten, Variablen in Bash-Skripten zu verwenden

Sie kennen wahrscheinlich Variablen in Bash-Shell-Skripten.

Wie andere Programmier- und Skriptsprachen verwenden Sie Variablen zum Speichern der Daten und referenzieren sie später in zukünftigen Befehlen.

name="Linux Handbook"
echo "Hello $name!"

Und es wird "Hello Linux Handbook!" ausgeben.

Abgesehen von dem obigen Beispiel gibt es auch eine überraschend große Menge an Dingen, die Sie mit Variablen tun können, wie das Ausfüllen eines Standardwerts, wenn die Variable nicht gesetzt ist, und das Zuweisen mehrerer Werte zu einer einzelnen Variablen.

Lassen Sie mich Ihnen diese ungewöhnliche und fortgeschrittene Verwendung von Variablen in Bash-Skripten zeigen.

Arrays verwenden

Mit Ausnahme des obigen Beispiels sind Arrays der häufigste Variablentyp, den Sie in Bash finden werden:

name=("Linux Handbook" "It's FOSS")

Das obige Beispiel weist beiden Linux Handbook zu und It's FOSS als Werte für name Variable.

Wie greifen Sie jedoch auf die einzelnen Werte zu?

Wenn Sie echo $name ausführen , sehen Sie, dass der erste Wert ausgegeben wird, Linux Handbook . Um auf die anderen Werte zuzugreifen, müssen Sie eine andere Syntax für Variablen verwenden.

Um mit dem Ziehen der anderen Werte zu beginnen, machen wir uns zunächst mit Folgendem vertraut:

echo "Hello ${name}!"

Dies ist die Grundlage dafür, was es Ihnen ermöglicht, alle Werte der Variablen zu erhalten, und es wird Ihnen auch ermöglichen, die restlichen Methoden zur Interaktion mit Variablen im Rest dieses Artikels auszuführen.

Um auf das oben genannte Beispiel zurückzukommen, können Sie den ${variable[number]} verwenden Syntax, um ein bestimmtes Element aus einer Variablen zu ziehen:

echo "Hello ${name[1]}!"

Dieser druckt "Hello It's FOSS!"

Falls Sie das obige Beispiel noch nicht sehen konnten, beginnt das erste Element im Array tatsächlich bei 0 statt bei 1.

Also das Linux Handbook ziehen Wert, würden Sie das Element an Position 0 ziehen:

echo "Hello ${name[0]}!"

Ebenso einfach den [number] weglassen part setzt einfach standardmäßig das erste Element im Array (dh bei Index 0).

Index bedeutet nur die Position des Elements im Array. Ebenso ist Index 0 das Element 0 innerhalb des Arrays.

Und das sind alle Variablentypen, die Sie tatsächlich in Bash finden.

Lassen Sie uns nun darauf eingehen, wie Sie tatsächlich mit diesen Variablen arbeiten und die Ausgabe dieser Variablen ändern können, wenn wir sie aufrufen.

Festlegen des Werts, wenn eine Variable nicht festgelegt ist

Sie können eine Variable auf einen bestimmten String zurücksetzen, wenn eine Variable nicht so gesetzt ist:

${variable:-string}

Nehmen Sie dieses Beispiel:

echo "Hello ${name:-nobody}!"

Da die Variable name nicht gesetzt ist, wird standardmäßig nobody verwendet und der obige Befehl wird "Hallo niemand!" ausgeben.

Wenn die Variable vorher gesetzt wurde, wird ihr Wert verwendet:

name="Linux Handbook"
echo "Hello ${name:-nobody}!"

Der obige Befehl druckt "Hello Linux Handbook!"

Festlegen des Werts, wenn eine Variable ist bereits eingestellt

Sie können eine Variable auch so einstellen, dass sie einen bestimmten Wert zurückgibt, wenn die Variable ist einstellen. Dies würde dazu führen, dass die Variable einen bestimmten String ausgibt, wenn sie gesetzt ist, und nichts ausgibt, wenn sie es nicht ist.

Die Syntax für diese Methode ähnelt der vorherigen, verwendet jedoch + Zeichen anstelle von - .

${variable:+string}

Nehmen Sie dieses Beispiel, in dem der Variablenname nicht festgelegt ist. Es wird also nichts für diesen variablen Teil ausgegeben und die Ausgabe für den Befehl wird "Hello !"

sein
echo "Hello ${name:+person}!"

Modifizieren Sie das obige Beispiel und setzen Sie die Variable name . Bei dieser speziellen Methode wird der bereits festgelegte Wert nicht verwendet und der von Ihnen angegebene verwendet.

name="Linux Handbook"
echo "Hello ${name:+person}!"

Der obige Befehl gibt "Hello person!" aus.

Wahrscheinlich finden Sie weitere Anwendungsfälle mit ${variable:-string} Syntax, als einige der Vorteile von ${variable:+string} kann bereits mit anderen Tools wie dem Testing ([] )-Operator:

Indirekte Verweise auf Variablen

Das nächste Beispiel verwendet die folgende Syntax:

${!variable}

Dieser hier ist etwas komplexer in seiner Funktionsweise, macht aber Sinn, nachdem Sie gesehen haben, wie er funktioniert:

name="Linux Handbook"
variable="name"

echo "Hello ${!variable}!"

Es wird "Hello Linux Handbook" ausgeben.

Dieser ! Zeichen vor dem Variablennamen bewirkt, dass der normale Variablenname ersetzt wird, verwendet dann aber den Namen von dass tr, um die relevante Variable zu finden.

Ebenso:

  • variable wird durch die Zeichenfolge name ersetzt , gefolgt von:
  • name wird durch den Wert von Linux Handbook ersetzt .

Ermitteln der Länge einer Variablen

Verwenden wir die vorherige Methode, aber tauschen Sie ! aus Zeichen für # :

${#variable}

Die Verwendung dieser Methode gibt die Länge der Variablen aus, verhält sich jedoch etwas anders, je nachdem, ob die Variable ein String oder ein Array ist.

Verwenden dieser Syntax für eine Zeichenfolge bewirkt, dass die Variable durch die Anzahl der Zeichen in der Zeichenfolge ersetzt wird.

variable="name"
echo "Length is ${#variable}."

Es wird prnt 4. Aber auf der anderen Seite verwenden Sie es auf einem Array druckt die Anzahl der Elemente innerhalb des Arrays, d.h. die Arraygröße, die hier 2 ist.

variable=("name" "word")
echo "Length is ${#variable}."

Kleinschreibung und Großschreibung von Zeichenfolgen

Schließlich können Sie eine Zeichenfolge mit ^ groß- und kleinschreiben und , Operatoren.

Sie stellen diese am Ende des Variablennamens wie folgt bereit:

# Capitalizes
${variable^}
${variable^^}

# Lowercases
${variable,}
${variable,,}

Was ist der Unterschied zwischen der Bereitstellung von einem oder zwei der Zeichen?

Geben Sie nur eine an (d. h. ${variable^} ) bewirkt, dass nur der erste Buchstabe geändert wird, während zwei bereitgestellt werden (${variable^^} ) bewirkt, dass die gesamte Zeichenfolge geändert wird.

Das folgende Beispiel gibt Name aus statt name :

variable="name"
echo "${variable^}"

Aber dieser gibt NAME aus :

variable="name"
echo "${variable^^}"

Ebenso können Sie Variablen auch in Kleinbuchstaben drucken.

Das folgende Beispiel gibt wIDEname aus :

variable="WIDEname"
echo "${variable,}"

Und dieser gibt widename aus :

variable="WIDEname"
echo "${variable,,}"

Abschluss

Dies sind nur einige der Möglichkeiten, wie Sie Variablen innerhalb von Bash verwenden können. In der Bash-Dokumentation zur Variablenerweiterung finden Sie verschiedene weitere Möglichkeiten, mit Variablen zu interagieren.

Haben Sie Fragen dazu, wie die obigen Beispiele funktioniert haben, oder etwas funktioniert einfach nicht richtig? Fühlen Sie sich frei, etwas davon im Kommentarbereich unten zu hinterlassen.


Linux
  1. Fünf Möglichkeiten, Umleitungsoperatoren in Bash zu verwenden

  2. Fehlerbehandlung in Bash-Skripten

  3. Bash-Scripting(I)

  4. Verwenden Sie Variablen innerhalb der {}-Erweiterung ohne `eval`?

  5. Gemeinsame Nutzung von Variablen über mehrere Shell-Skripte hinweg?

Unterschied zwischen der Definition von Bash-Variablen mit und ohne Export

Bash-Scripting – Variablen mit Beispielen erklärt

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen

Bash-Variablen-Tutorial – 6 praktische Bash-Beispiele für globale und lokale Variablen

Wie verwende ich die Linux-Bash-Shell in Windows 10?