Arbeiten mit Shell-Variablen

ShellBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie den Umgang mit Shell-Variablen unter Linux. Shell-Variablen sind essenziell für das Speichern und Verarbeiten von Daten in Shell-Skripten. Sie können verschiedene Arten von Werten wie Zahlen, Zeichen oder ganze Zeichenketten enthalten. Dieses Lab führt Sie durch das Erstellen, Referenzieren und Verwenden von Shell-Variablen und legt damit ein solides Fundament für Ihre Fähigkeiten im Bereich Shell-Scripting.

Dies ist ein geführtes Lab (Guided Lab), das Ihnen Schritt-für-Schritt-Anweisungen bietet, um Sie beim Lernen und Üben zu unterstützen. Folgen Sie den Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrung zu sammeln. Historische Daten zeigen, dass dies ein Lab für Anfänger ist, mit einer Abschlussquote von 81%. Es hat eine positive Bewertung von 99% von Lernenden erhalten.

Shell-Variablen erstellen

Shell-Variablen werden erzeugt, indem man ihnen mit dem Gleichheitszeichen = einen Wert zuweist. Wir beginnen damit, ein einfaches Shell-Skript zu erstellen, das einige Variablen definiert.

  1. Öffnen Sie ein Terminal in Ihrer WebIDE (VS Code).

  2. Erstellen Sie eine neue Datei namens variables.sh im Verzeichnis /home/labex/project:

    touch /home/labex/project/variables.sh
  3. Öffnen Sie die Datei variables.sh in der WebIDE und fügen Sie den folgenden Inhalt hinzu:

    #!/bin/bash
    
    PRICE_PER_APPLE=5
    MyFirstLetters=ABC
    greeting='Hello        world!'
    
    echo "Price per apple: $PRICE_PER_APPLE"
    echo "My first letters: $MyFirstLetters"
    echo "Greeting: $greeting"

    In diesem Skript haben wir drei Variablen erstellt:

    • PRICE_PER_APPLE: Eine Ganzzahl-Variable (Integer)
    • MyFirstLetters: Eine Zeichenketten-Variable (String)
    • greeting: Eine Zeichenketten-Variable mit mehreren Leerzeichen
  4. Speichern Sie die Datei.

  5. Machen Sie das Skript ausführbar:

    chmod +x /home/labex/project/variables.sh
  6. Führen Sie das Skript aus:

    ./variables.sh

    Sie sollten die folgende Ausgabe sehen:

    Price per apple: 5
    My first letters: ABC
    Greeting: Hello        world!

    Beachten Sie, dass die zusätzlichen Leerzeichen in der Variable greeting in der Ausgabe erhalten bleiben, da wir einfache Anführungszeichen bei der Definition verwendet haben, aber keine Anführungszeichen im Echo-Befehl (in diesem speziellen Fall der Zuweisung).

Referenzieren von Shell-Variablen

Beim Referenzieren von Shell-Variablen gibt es einige Szenarien, in denen eine spezielle Syntax erforderlich ist. Lassen Sie uns diese Fälle untersuchen.

  1. Öffnen Sie die Datei variables.sh in der WebIDE.

  2. Ersetzen Sie den Inhalt der Datei durch Folgendes:

    #!/bin/bash
    
    PRICE_PER_APPLE=5
    MyFirstLetters=ABC
    greeting='Hello        world!'
    
    ## Maskieren von Sonderzeichen
    echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE"
    
    ## Vermeidung von Mehrdeutigkeiten
    echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ"
    
    ## Erhalt von Leerzeichen
    echo $greeting
    echo "$greeting"
  3. Speichern Sie die Datei.

  4. Führen Sie das Skript aus:

    ./variables.sh

    Sie sollten die folgende Ausgabe sehen:

    The price of an Apple today is: $HK 5
    The first 10 letters in the alphabet are: ABCDEFGHIJ
    Hello world!
    Hello        world!

    Beachten Sie die Unterschiede:

    • Das $-Zeichen wird in der ersten Zeile mit einem Backslash maskiert (escaped), um es als normales Textzeichen auszugeben.
    • Geschweifte Klammern {} werden in der zweiten Zeile verwendet, um den Variablennamen eindeutig vom nachfolgenden Text abzugrenzen.
    • Die letzten beiden Zeilen zeigen den Unterschied zwischen der Referenzierung einer Variable mit und ohne Anführungszeichen, wenn diese Leerzeichen enthält.

Befehlssubstitution

Die Befehlssubstitution ermöglicht es Ihnen, die Ausgabe eines Befehls als Wert einer Variable zu verwenden. Dies geschieht, indem der Befehl in $() oder Backticks (``) eingeschlossen wird.

  1. Öffnen Sie die Datei variables.sh in der WebIDE.

  2. Fügen Sie den folgenden Inhalt am Ende der Datei hinzu:

    ## Command substitution
    CURRENT_DATE=$(date +"%Y-%m-%d")
    echo "Today's date is: $CURRENT_DATE"
    
    FILES_IN_DIR=$(ls)
    echo "Files in the current directory:"
    echo "$FILES_IN_DIR"
    
    UPTIME=$(uptime -p)
    echo "System uptime: $UPTIME"
  3. Speichern Sie die Datei.

  4. Führen Sie das Skript aus:

    ./variables.sh

    Sie sollten eine Ausgabe ähnlich dieser sehen (die tatsächlichen Werte hängen von Ihrem System ab):

    Today's date is: 2023-08-16
    Files in the current directory:
    variables.sh
    System uptime: up 2 hours, 15 minutes

    In diesem Beispiel:

    • $(date +"%Y-%m-%d") führt den Befehl date aus und speichert dessen Ausgabe.
    • $(ls) führt den Befehl ls aus und erfasst die Liste der Dateien.
    • $(uptime -p) führt den Befehl uptime mit der Option -p aus, um die Systemlaufzeit zu ermitteln.

Arithmetische Operationen

Shell-Variablen können auch in arithmetischen Operationen verwendet werden. Die Bash bietet die Syntax $((Ausdruck)) für Berechnungen an.

  1. Erstellen Sie eine neue Datei namens arithmetic.sh im Verzeichnis /home/labex/project:

    touch /home/labex/project/arithmetic.sh
  2. Öffnen Sie die Datei arithmetic.sh in der WebIDE und fügen Sie den folgenden Inhalt hinzu:

    #!/bin/bash
    
    X=10
    Y=5
    
    ## Addition
    SUM=$((X + Y))
    echo "Sum of $X and $Y is: $SUM"
    
    ## Subtraction
    DIFF=$((X - Y))
    echo "Difference between $X and $Y is: $DIFF"
    
    ## Multiplication
    PRODUCT=$((X * Y))
    echo "Product of $X and $Y is: $PRODUCT"
    
    ## Division
    QUOTIENT=$((X / Y))
    echo "Quotient of $X divided by $Y is: $QUOTIENT"
    
    ## Modulus (remainder)
    REMAINDER=$((X % Y))
    echo "Remainder of $X divided by $Y is: $REMAINDER"
    
    ## Increment
    X=$((X + 1))
    echo "After incrementing, X is now: $X"
    
    ## Decrement
    Y=$((Y - 1))
    echo "After decrementing, Y is now: $Y"
  3. Speichern Sie die Datei.

  4. Machen Sie das Skript ausführbar:

    chmod +x /home/labex/project/arithmetic.sh
  5. Führen Sie das Skript aus:

    ./arithmetic.sh

    Sie sollten die folgende Ausgabe sehen:

    Sum of 10 and 5 is: 15
    Difference between 10 and 5 is: 5
    Product of 10 and 5 is: 50
    Quotient of 10 divided by 5 is: 2
    Remainder of 10 divided by 5 is: 0
    After incrementing, X is now: 11
    After decrementing, Y is now: 4

    Dieses Skript demonstriert verschiedene mathematische Operationen unter Verwendung von Shell-Variablen.

Verwendung von Umgebungsvariablen

Umgebungsvariablen sind Variablen, die für alle Prozesse verfügbar sind, die in der aktuellen Shell-Sitzung ausgeführt werden. Wir schauen uns einige gängige Umgebungsvariablen an und lernen, wie wir eigene erstellen.

  1. Erstellen Sie eine neue Datei namens environment.sh im Verzeichnis /home/labex/project:

    touch /home/labex/project/environment.sh
  2. Öffnen Sie die Datei environment.sh in der WebIDE und fügen Sie den folgenden Inhalt hinzu:

    #!/bin/bash
    
    ## Displaying some common environment variables
    echo "Home directory: $HOME"
    echo "Current user: $LOGNAME"
    echo "Shell being used: $SHELL"
    echo "Current PATH: $PATH"
    
    ## Creating a new environment variable
    export MY_VARIABLE="Hello from my variable"
    
    ## Displaying the new variable
    echo "My new variable: $MY_VARIABLE"
    
    ## Creating a child process to demonstrate variable scope
    bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"'
    
    ## Removing the environment variable
    unset MY_VARIABLE
    
    ## Verifying the variable is unset
    echo "MY_VARIABLE after unsetting: $MY_VARIABLE"
  3. Speichern Sie die Datei.

  4. Machen Sie das Skript ausführbar:

    chmod +x /home/labex/project/environment.sh
  5. Führen Sie das Skript aus:

    ./environment.sh

    Sie sollten eine Ausgabe ähnlich dieser sehen:

    Home directory: /home/labex
    Current user: labex
    Shell being used: /bin/zsh
    Current PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    My new variable: Hello from my variable
    MY_VARIABLE in child process: Hello from my variable
    MY_VARIABLE after unsetting:

    Dieses Skript zeigt, wie man auf existierende Umgebungsvariablen zugreift, neue mit export erstellt und sie mit unset wieder entfernt.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man mit Shell-Variablen unter Linux arbeitet. Sie haben die Erstellung und Referenzierung von Variablen erkundet, die Befehlssubstitution genutzt, um Befehlsausgaben Variablen zuzuweisen, arithmetische Operationen durchgeführt und mit Umgebungsvariablen gearbeitet. Diese Fähigkeiten bilden eine entscheidende Grundlage für das Shell-Scripting und werden Ihnen bei der Arbeit mit Linux-Systemen von großem Nutzen sein.

Die wichtigsten Erkenntnisse aus diesem Lab sind:

  • Erstellen und Referenzieren von Shell-Variablen.
  • Verwendung spezieller Syntax für die Variablenreferenzierung in verschiedenen Szenarien.
  • Nutzung der Befehlssubstitution zum Erfassen von Befehlsausgaben.
  • Durchführung arithmetischer Operationen mit Shell-Variablen.
  • Umgang mit Umgebungsvariablen und deren Sichtbarkeit.

Während Sie Ihren Weg in Linux und Shell-Scripting fortsetzen, denken Sie daran, dass Variablen mächtige Werkzeuge zum Speichern und Manipulieren von Daten sind. Üben Sie deren Einsatz in Ihren Skripten, um Ihren Code flexibler und wiederverwendbar zu gestalten.