In jeder Programmierung Sprach-Variablen eine wichtige Rolle spielt, verwenden wir beim Linux-Shell-Scripting zwei Arten von Variablen:Systemdefinierte Variablen &benutzerdefinierte Variablen .
Eine Variable in einem Shell-Skript ist ein Mittel zur Referenzierung eine Zahl oder Zeichenwert . Und im Gegensatz zu formalen Programmiersprachen erfordert ein Shell-Skript nicht, dass Sie einen Typ deklarieren für Ihre Variablen
In diesem Artikel werden wir Variablen, ihre Typen und das Setzen und Verwenden von Variablen in Shell-Skripten besprechen.
Systemdefinierte Variablen:
Dies sind die Variablen, die vom Betriebssystem (Linux) selbst erstellt und verwaltet werden. Im Allgemeinen werden diese Variablen in GROSSBUCHSTABEN definiert . Wir können diese Variablen sehen, indem wir den Befehl „$ set verwenden “. Einige der systemdefinierten Variablen sind unten aufgeführt:
Um den Wert der obigen Variablen zu drucken, verwenden Sie den Echo-Befehl wie unten gezeigt:
# echo $HOME
# echo $USERNAME
Wir können diese Umgebungsvariablen aus Ihren Skripts heraus anzapfen, indem wir den Namen der Umgebungsvariablen mit vorangestelltem Dollarzeichen verwenden. Dies wird im folgenden Skript demonstriert:
$ cat myscript
#!/bin/bash
# Benutzerinformationen vom System anzeigen.
echo „Benutzerinfo für Benutzer-ID:$USER“
echo UID:$UID
echo HOME:$HOME
Beachten Sie, dass die Umgebungsvariablen in den echo-Befehlen werden beim Ausführen des Skripts durch ihre aktuellen Werte ersetzt. Beachten Sie auch, dass wir $USER platzieren konnten Systemvariable innerhalb der doppelten Anführungszeichen in der ersten Zeichenfolge, und das Shell-Skript konnte immer noch herausfinden, was wir meinten. Es gibt einen Nachteil jedoch diese Methode zu verwenden. Sehen Sie sich an, was in diesem Beispiel passiert:
$ echo „Der Artikel kostet 15 $“
Der Artikel kostet 5
Das war offensichtlich nicht beabsichtigt. Immer wenn das Skript ein Dollarzeichen in Anführungszeichen sieht, geht es davon aus, dass Sie auf eine Variable verweisen. In diesem Beispiel hat das Skript versucht, die Variable $1 anzuzeigen (das nicht definiert wurde) und dann die Zahl 5. Um ein tatsächliches Dollarzeichen anzuzeigen, müssen Sie voranstellen es mit einem Backslash-Zeichen:
$ echo „Der Artikel kostet \$15“
Der Artikel kostet $15
Das ist besser. Der umgekehrte Schrägstrich ermöglichte es dem Shell-Skript, das Dollarzeichen zu interpretieren als tatsächliches Dollarzeichen und nicht als Variable.
Benutzerdefinierte Variablen:
Diese Variablen werden von Benutzern definiert . Ein Shell-Skript ermöglicht es uns, unsere eigenen Variablen zu setzen und zu verwenden innerhalb des Skripts. Durch das Setzen von Variablen können Sie Daten vorübergehend speichern und verwenden Sie es im gesamten Skript, wodurch das Shell-Skript mehr einem echten Computerprogramm ähnelt.
Benutzervariablen kann eine beliebige Textzeichenfolge mit bis zu 20 Buchstaben sein , Ziffern , oder ein Unterstrich . Bei Benutzervariablen wird zwischen Groß- und Kleinschreibung unterschieden, daher unterscheidet sich die Variable Var1 von der Variablen var1. Diese kleine Regel bringt unerfahrene Skriptprogrammierer oft in Schwierigkeiten.
Werte werden Benutzervariablen mit einem Gleichheitszeichen zugewiesen Zwischen der Variablen, dem Gleichheitszeichen und dem Wert dürfen keine Leerzeichen stehen (ein weiterer Problempunkt für Anfänger). Hier sind einige Beispiele für die Zuweisung von Werten an Benutzervariablen:
var1=10
var2=-57
var3=testing
var4=“Noch mehr Tests”
Das Shell-Skript ermittelt automatisch den Datentyp für den Variablenwert verwendet. Innerhalb des Shell-Skripts definierte Variablen behalten ihre Werte während der gesamten Lebensdauer des Shell-Skripts bei, werden jedoch gelöscht, wenn das Shell-Skript abgeschlossen ist.
Genau wie Systemvariablen können Benutzervariablen mit dem Dollarzeichen referenziert werden:
$ cat test3
#!/bin/bash
# Testvariablen
days=10
guest="Katie"
echo „$guest checkte vor $days Tagen ein“
days=5
guest=“Jessica“
echo „$guest checkte vor $days Tagen ein“
$
Das Ausführen des Skripts erzeugt die folgende Ausgabe:
$ chmod u+x test3
$ ./test3
Katie hat vor 10 Tagen eingecheckt
Jessica hat vor 5 Tagen eingecheckt
$
Jedes Mal, wenn die Variable referenziert wird , erzeugt es den ihm aktuell zugewiesenen Wert. Denken Sie daran, dass Sie beim Verweisen auf einen Variablenwert das Dollarzeichen verwenden , aber wenn Sie auf die Variable verweisen, um ihr einen Wert zuzuweisen, verwenden Sie das Dollarzeichen nicht. Hier ist ein Beispiel dafür, was ich meine:
$ cat test4
#!/bin/bash
# einen Variablenwert einer anderen Variablen zuweisen
value1=10
value2 =$value1
echo Der resultierende Wert ist $value2
$
Wenn Sie den Wert verwenden des Wert1 Variable in der Zuweisungsanweisung müssen Sie weiterhin das Dollarzeichen verwenden. Dieser Code erzeugt die folgende Ausgabe:
$ chmod u+x test4
$ ./test4
Der resultierende Wert ist 10
$
Wenn Sie das Dollarzeichen vergessen und die Wert2-Zuweisungszeile so aussehen lässt:
value2=value1
Sie erhalten die folgende Ausgabe:
$ ./test4
Der resultierende Wert ist value1
$
Ohne das Dollarzeichen interpretiert die Shell den Variablennamen als normalen Textstring , was höchstwahrscheinlich nicht das war, was Sie wollten.
Verwendung des Backtick-Symbols (`) in Shell-Variablen :
Der Backtick erlaubt Sie können die Ausgabe eines Shell-Befehls einer Variablen zuweisen. Dies scheint zwar nicht viel zu sein, ist aber ein wichtiger Baustein in Skripten Programmierung. Sie müssen den gesamten Befehlszeilenbefehl mit Backtick-Zeichen umgeben:
testing=`date`
Die Shell führt den Befehl innerhalb der Backticks aus und weist die Ausgabe der Variablen Testen zu. Hier ist ein Beispiel für das Erstellen einer Variablen mit der Ausgabe eines normalen Shell-Befehls:
$ cat test5
#!/bin/bash
# unter Verwendung des Backtick-Zeichens
testing=`date`
echo “ Datum und Uhrzeit sind:” $testing
$
Die Variable testing empfängt die Ausgabe des date-Befehls und wird in der echo-Anweisung verwendet, um sie anzuzeigen. Das Ausführen des Shell-Skripts erzeugt die folgende Ausgabe:
$ chmod u+x test5
$ ./test5
Datum und Uhrzeit lauten:Mo. Jan. 31 20:23:25 EDT 2011
Hinweis :In der Bash können Sie auch die Alternative $(…) verwenden Syntax anstelle des Backticks (`), was den Vorteil hat, wiedereintrittsfähig zu sein.
Beispiel:$ echo ” Heutiges Datum und Uhrzeit ist:” $(date)
Heutiges Datum und Uhrzeit ist:Sun Jul 27 16:26:56 IST 2014
Lesen Sie auch : 9 „diff“-Befehlsbeispiele in Linux