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).
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 !"
seinecho "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 Zeichenfolgename
ersetzt , gefolgt von:name
wird durch den Wert vonLinux 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.