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

Bash-Scripting – Variablen mit Beispielen erklärt

Variablen sind sehr wichtige Konzepte in jeder Programmiersprache, mit der Sie arbeiten. Stellen Sie sich eine Variable als Container im Speicher vor, der Daten eines bestimmten Typs speichert. Der Hauptzweck von Variablen besteht darin, einen Wert zu speichern und später zur Verarbeitung darauf zuzugreifen. Wenn Sie jemand aus anderen Programmiersprachen wie Java, C, C++ sind, werden Sie möglicherweise Unterschiede in der Variablendefinition feststellen, da Bash kein starkes Typsystem hat.

Bash verarbeitet zwei Arten von Variablen. Sie sind:

  • Benutzerdefinierte Variablen :Variablen, die Sie erstellen und bearbeiten.
  • Umgebungsvariablen :Erstellt und gespeichert von Bash oder Anwendungen für den System-/Anwendungszweck.

Wir beginnen mit der Arbeit mit benutzerdefinierten Variablen, gefolgt von Umgebungsvariablen.

1. So erstellen Sie eine Variable

Die Variable sollte einen Bezeichner (Variablenname) und einen ihr zugewiesenen Wert haben, wie unten gezeigt. Der Bezeichner (Variablenname) ist "site_name" und der zugewiesene Wert ist "OSTechnix" .

$ site_name="OSTechnix"
$ this_year=2021
$ value_of_pi=3.14

Beim Erstellen von Variablen sind einige Dinge zu beachten.

  • Zwischen Variablenname und -wert darf kein Leerzeichen stehen.
  • Vermeiden Sie die Verwendung von Namen, die bereits verwendet werden, wie z. B. reservierte Bash-Schlüsselwörter, Variablen- und Funktionsnamen, die zu Konflikten führen.
  • Erstellen Sie beschreibende Variablennamen und Variablennamen können Buchstaben, Zahlen, Unterstriche und Ziffern enthalten.

Die Variablenbenennungskonvention ist umstritten, da ich gesehen habe, dass verschiedene Leute unterschiedliche Konventionen verwenden, um Variablennamen zu erstellen. Einige erstellen benutzerdefinierte Variablen mit Schlangenbuchstaben, wie ich sie im vorherigen Beispiel erstellt habe, und einige erstellen Variablennamen mit Großbuchstaben. Es gibt keine strengen Regeln in Bash, aber seien Sie konsequent mit welcher Methode Sie sich auch entscheiden. Ich benenne meine Variablen lieber in Großbuchstaben und Konstanten in Großbuchstaben.

2. Zugriff auf Bash-Variablen

Es gibt zwei Möglichkeiten, auf eine Variable zuzugreifen. Einer verwendet "$ symbol" gefolgt vom Variablennamen und die zweite Methode verwendet das "$ symbol" gefolgt von geschweiften Klammern und dem Variablennamen in den geschweiften Klammern.

$ echo $site_name
OSTechnix
$ echo ${this_year}
2021
$ echo ${this_year} $value_of_pi
2021 3.14

3. Wert einer Variablen neu zuweisen

Bash hat kein starkes Typsystem, was bedeutet, dass es keine strengen Regeln für die Definition des Datentyps beim Erstellen der Variablen gibt. Die Bash-Variable speichert alle Werte als Strings und weiß intelligent, wann wir mit numerischen Berechnungen arbeiten.

Sie können einer bereits erstellten Variablen beliebige Werte neu zuweisen.

$ os_name="PoP_OS!"
$ echo ${os_name}
PoP_OS!
$ os_name="Linux Mint"
$ echo ${os_name}
Linux Mint

4. Datentyp für eine Variable deklarieren

Sie können den declare verwenden Befehl zum Erstellen einer Variablen mit einem bestimmten Datentyp. Greifen Sie auf den Hilfebereich von declare zu Befehl, um mehr darüber zu erfahren.

$ declare --help

Wenn Sie beispielsweise eine Variable mit dem int erstellen möchten Datentyp können Sie den declare verwenden Befehl mit dem -i Flagge.

$ declare -i pi
$ pi=3
$ echo $pi
3
$ pi=3.14
bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")

Denken Sie daran, das declare Befehl ist eine Möglichkeit, das Attribut Ihrer Variablen zu manipulieren, aber erwarten Sie kein starkes Typsystem von declare Befehl wie in anderen Programmiersprachen.

5. Befehlsausgabe in eine Variable

Sie können beliebige Bash-Befehle ausführen und die Ausgabe des Befehls in der Variablen speichern. Sie müssen den Befehl innerhalb von $() wie unten und verwenden Sie die Variable später für die weitere Verarbeitung.

$ today_date=$(date)
$ echo ${today_date}
Saturday 11 September 2021 08:53:25 PM IST

6. Verwendung von Anführungszeichen mit Variablen

In Bash verhalten sich einfache und doppelte Anführungszeichen auf zwei verschiedene Arten. Einfache Anführungszeichen verhindern die Erweiterung und behandeln den Wert als Literal. Doppelte Anführungszeichen ermöglichen eine Erweiterung.

Schauen Sie sich das folgende Beispiel an. Ich habe eine Variable mit dem Namen "which_year" erstellt und Ausführen eines Befehls zusammen mit einer Zeichenfolge. Wenn ich doppelte Anführungszeichen verwende, ist das date Befehl wird erweitert, aber wenn einfache Anführungszeichen verwendet werden, das date Der Befehl wird nicht ausgeführt und wird unverändert in der Variablen gespeichert.

$ which_year="I am in year : $(date +%Y)"
$ echo ${which_year}
I am in year : 2021
$ which_year='I am in year : $(date +%Y)'
$ echo ${which_year}
I am in year : $(date +%Y)'

7. Variable entfernen

Sie können die Variable mit unset entfernen Befehl.

Der Unset entfernt die Werte und Attribute von Variablen und Funktionen.

Sie können entweder unset verwenden mit -v Flag, das auf eine Variable zeigt oder nur unset Befehl, der standardmäßig zuerst nach Variablendefinitionen sucht und diese aufhebt.

$ echo ${which_year}
$ unset -v which_year (or) unset which_year
$ echo ${which_year}

Weitere Einzelheiten finden Sie unter unset Befehlshilfeabschnitt.

$ unset --help

8. Nur-Lese-Variable

Ein schreibgeschützter Zustand bedeutet, dass Sie den Wert nicht ändern oder die Variable entfernen können, sobald sie erstellt wurde. Es gibt zwei Möglichkeiten, die schreibgeschützte Variable zu erstellen.

Bash-integriertes readonly verwenden um die schreibgeschützte Variable zu erstellen.

$ readonly var1="This is a readonly variable"

Alternativ können Sie auch declare verwenden Befehl mit dem -r Flagge.

$ declare -r var2="This is a readonly variable too"

Sie können readonly nicht neu zuweisen oder die Einstellung aufheben Variablenwert, wird ein Fehler ausgegeben.

$ var2="Reassigning with new value"
bash: var2: readonly variable
$ unset var1
bash: unset: var1: cannot unset: readonly variable

9. Bash eingebaute spezielle Variablen

Bash hat einige spezielle eingebaute Variablen, die zum Speichern bestimmter Ergebnisse bestimmt sind. Werfen Sie einen Blick auf die folgende Liste der Variablen.

$? = Stores exit status of last ran the command.
$$ = Stores process ID for your bash session.
$0 = Script name.
$1 .. $9 = Arguments passed to the script.
$# = Count the length of values
[email protected], $* = Stores array of all values.

9.1. Exit-Status ($?)

Jeder Linux-Befehl, den Sie ausführen, hat einen zugeordneten Exit-Code von (0-255). Null weist auf Erfolg hin und der Rest auf Misserfolg mit einer anderen Bedeutung.

$ whoami
$ echo $?
0
$ asdf # WRONG COMMAND
$ echo $?
127

9.2. Prozess-ID ($$)

Mit $$ Operator können Sie die Bash-Prozess-ID erhalten. Wenn Sie es vom Terminal aus ausführen, erhalten Sie die Prozess-ID für Ihre aktuelle Sitzung.

$ echo $$
195777 # PROCESS ID OF MY CURRENT TERMINAL SESSION

9.3. Skriptname &Argumente ($0-$9)

Argumente können an Ihre Skripte übergeben werden und Sie haben sie möglicherweise bereits in Ihrem täglichen Leben verwendet. Sehen Sie sich die id an Befehl, der den Benutzernamen als Argument akzeptiert.

$ id karthick
uid=1000(karthick) gid=1000(karthick) groups=1000(karthick),4(adm),27(sudo),119(lpadmin),998(docker)

Auf ähnliche Weise können Sie Skripts erstellen, die Argumente akzeptieren. Erstellen Sie ein Beispiel-Shell-Skript und kopieren Sie das folgende Snippet und fügen Sie es ein.

cat > main.sh
#!/bin/bash

echo "+ script_name=$0 "
echo "+ first_argument=$1 "
echo "+ second_argument=$2 "
echo "+ third_argument=$3 "

Führen Sie nun das Skript aus und übergeben Sie Argumente. Ich übergebe 1 bis 3 als Argumente. $0 nimmt den Skriptnamen mit absolutem Pfad auf, da ich den absoluten Pfad und $1 übergeben habe bis $3 wird mit entsprechenden übergebenen Argumenten zugewiesen.

$ /home/karthick/main.sh 1 2 3
+ script_name=/home/karthick/main.sh 
+ first_argument=1 
+ second_argument=2 
+ third_argument=3 

9.4. Länge eines Werts ($#)

Mit $# , können Sie die Gesamtzahl der übergebenen Argumente berechnen oder die Länge beliebiger Werte zählen. Schauen Sie sich das folgende Beispiel an. Stellen Sie dem Variablennamen # voran und es wird die Länge des Werts anstelle des tatsächlichen Werts gedruckt.

$ site_name="OSTechnix"
$ echo ${#site_name}
9

10. Variabler Geltungsbereich

Es ist wichtig, dass Sie den Gültigkeitsbereich einer Variablen verstehen. Wenn Sie eine Variable entweder im Terminal oder über ein Shell-Skript erstellen, ist diese Variable gebunden und nur für diese Sitzung verfügbar. Sie können es auch als lokale Variable sagen. Wenn Sie versuchen, von anderen Sitzungen aus auf die Variable zuzugreifen, ist die Variable nicht verfügbar.

Werfen Sie einen Blick auf das folgende Bild, das Ihnen ein gutes Verständnis dafür vermittelt, was passiert.

  1. Erstellen Sie die Variable site_name="OSTechnix" aus Ihrer aktuellen Shell und greifen Sie auf die Variable zu.
  2. Verwenden Sie die $$ variable um zu sehen, in welcher Sitzung Sie sich befinden.
  3. Erstellen Sie eine neue Bash-Sitzung, indem Sie "bash" eingeben .
  4. Versuchen Sie, auf die Variable site_name zuzugreifen aus dieser Sitzung. Sie erhalten eine leere Ausgabe, was das Standardverhalten in Bash ist.
  5. Beenden Sie die neue Sitzung, indem Sie "Exit" eingeben und versuchen Sie jetzt, auf die Variable zuzugreifen, und Sie können auf die Variable zugreifen.

Wenn Sie von beliebigen Sitzungen global auf die Variable zugreifen möchten, müssen Sie den export verwenden Befehl, der die Variable für den Zugriff in allen untergeordneten Sitzungen/Prozessen verfügbar macht, die aus Ihrer aktuellen Sitzung erstellt wurden.

$ site_name="OSTechnix"
$ export site_name

Oder

$ export site_name="OSTechnix"
$ bash
$ echo ${site_name}

Sie können die Liste der zu exportierenden Variablen abrufen, indem Sie "export" eingeben vom Endgerät. Sie erhalten sowohl Umgebungs- als auch benutzerdefinierte Variablenlisten.

$ export

11. Umgebungsvariable

Bisher haben wir gesehen, wie man mit benutzerdefinierten Variablen arbeitet. Im Einführungsabschnitt habe ich erwähnt, dass bash Umgebungsvariablen unterstützt. Dieser Satz von Variablen wird geladen, wenn Sie Ihre Bash-Sitzungen starten, und sie werden von Bash verwaltet. Diese Umgebungsvariablen werden von den Anwendungen verwendet, um über das Verhalten zu entscheiden.

Zum Beispiel nano ist als Standardeditor für die Bearbeitung von crontab eingestellt . Wenn ich Vim verwenden möchte statt nano kann ich die EDITOR env setzen variable und crontab wird nach dieser Umgebungsvariable suchen und sie verwenden.

$ export EDITOR="vim"
$ crontab -e

Vorsicht: Ihre Variable ist nur an Ihre aktuelle Sitzung gebunden. Wenn Sie es dauerhaft machen möchten, müssen Sie es in ~/.bashrc einfügen oder ~/.bash_profile .

Sie können die Liste der Umgebungsvariablen abrufen, indem Sie "printenv" ausführen Befehl. Sie werden sehen, dass die Umgebungsvariablen mit Großbuchstaben definiert sind.

$ printenv

Sie können auch mit dem Befehl printenv auf die jeweilige Umgebungsvariable zugreifen. Nachfolgend sind einige der häufigsten Umgebungsvariablen aufgeführt, auf die Sie stoßen werden.

$ printenv USER # PRINTS USER NAME
karthick
$ printenv HOME # USER HOME DIRECTORY LOCATION
/home/karthick
$ printenv PWD # PRESSENT WORKING DIRECTORY
/home/karthick
$ printenv SHELL # WHICH SHELL I AM USING NOW
/bin/bash
$ printenv PATH # PATH WHICH IS USED BY BASH TO CHECK AND RUN COMMANDS
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Schlussfolgerung

In diesem Handbuch zu Bash-Variablen haben wir mit einer kurzen Einführung über Variablen und deren Erstellung, Zugriff, Änderung und Aufhebung in den jeweiligen Abschnitten begonnen. Und dann haben wir gesehen, was der Unterschied zwischen benutzerdefinierten und Umgebungsvariablen ist. Versuchen Sie, die Liste der Umgebungsvariablen zu erkunden, die in Ihre Sitzungen geladen werden, um Ihnen ein gutes Verständnis von Bash zu vermitteln.

Verwandte Lektüre:

  • Bash-Skripting – For-Schleife mit Beispielen erklärt
  • Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt
  • Bash-Scripting – Funktionen mit Beispielen erklärt
  • Bash-Echo-Befehl mit Beispielen in Linux erklärt
  • Bash Heredoc-Tutorial für Anfänger
  • Bash-Umleitung mit Beispielen erklärt
  • Unterschied zwischen der Definition von Bash-Variablen mit und ohne Export

Linux
  1. So schreiben Sie ein Bash-Skript mit Beispielen

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

  3. Bash-Scripting(I)

  4. Bash-If-Else-Anweisung mit Beispielen

  5. Alias ​​mit Variable in Bash

Tr-Befehl in Linux mit Beispielen erklärt

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

Bash-Scripting Teil 2 – For- und While-Schleifen mit Beispielen

Bash Scripting Einführungstutorial mit 5 praktischen Beispielen

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

Bash-Skript für Schleife mit Beispielen erklärt