Arbeiten mit Shell-Variablen

ShellShellBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie mit Shell-Variablen in Linux arbeiten. Shell-Variablen sind unerlässlich für die Speicherung und Manipulation von Daten in Shell-Skripten. Sie können verschiedene Arten von Werten wie Zahlen, Zeichen oder Strings enthalten. In diesem Lab werden Sie durch das Erstellen, Referenzieren und Verwenden von Shell-Variablen geführt und erhalten so eine solide Grundlage für das Schreiben von Shell-Skripten.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 81% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Erstellen von Shell-Variablen

Shell-Variablen werden erstellt, indem ihnen ein Wert mit dem =-Zeichen zugewiesen wird. Beginnen wir 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 mit dem Namen 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 Ganzzahlvariable
    • MyFirstLetters: Eine Zeichenkettenvariable
    • greeting: Eine Zeichenkettenvariable 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 greeting-Variable in der Ausgabe beibehalten werden, wenn Sie einfache Anführungszeichen verwenden, um die Variable zu definieren, und keine Anführungszeichen in der echo-Anweisung verwenden.

Referenzieren von Shell-Variablen

Beim Referenzieren von Shell-Variablen gibt es einige Szenarien, in denen Sie eine spezielle Syntax verwenden müssen. 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!'
    
    ## Escaping special characters
    echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE"
    
    ## Avoiding ambiguity
    echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ"
    
    ## Preserving whitespace
    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 escaped, um es literal auszugeben.
    • Geschweifte Klammern {} werden in der zweiten Zeile verwendet, um den Variablennamen eindeutig zu definieren.
    • Die letzten beiden Zeilen zeigen den Unterschied zwischen der Verwendung von Anführungszeichen und der Nichtverwendung von Anführungszeichen beim Referenzieren einer Variable mit Leerzeichen.

Befehlssubstitution

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

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

  2. Fügen Sie am Ende der Datei folgenden Inhalt 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 der folgenden 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 date-Befehl aus und erfasst seine Ausgabe.
    • $(ls) führt den ls-Befehl aus und erfasst seine Ausgabe.
    • $(uptime -p) führt den uptime-Befehl mit der Option -p aus und erfasst seine Ausgabe.

Arithmetische Operationen

Shell-Variablen können auch in arithmetischen Operationen verwendet werden. Bash bietet die Syntax $((expression)) für die Durchführung von Arithmetik.

  1. Erstellen Sie eine neue Datei mit dem Namen 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 arithmetische Operationen unter Verwendung von Shell-Variablen.

Verwendung von Umgebungsvariablen

Umgebungsvariablen sind eine Art von Variablen, die für alle Prozesse verfügbar sind, die in der aktuellen Shell-Sitzung laufen. Lassen Sie uns einige häufige Umgebungsvariablen untersuchen und erfahren, wie wir unsere eigenen erstellen können.

  1. Erstellen Sie eine neue Datei mit dem Namen 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 der folgenden sehen (die tatsächlichen Werte hängen von Ihrem System ab):

    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 vorhandene Umgebungsvariablen zugreift, neue erstellt und diese entfernt.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man mit Shell-Variablen in Linux arbeitet. Sie haben das Erstellen und Referenzieren von Variablen untersucht, die Befehlssubstitution verwendet, um Befehlsausgaben an Variablen zuzuweisen, arithmetische Operationen mit Variablen durchgeführt und mit Umgebungsvariablen gearbeitet. Diese Fähigkeiten bilden eine entscheidende Grundlage für das Shell-Skripting und werden von unschätzbarem Wert sein, wenn Sie weiterhin mit Linux-Systemen arbeiten.

Wichtige Erkenntnisse aus diesem Lab sind:

  • Erstellen und Referenzieren von Shell-Variablen
  • Verwenden einer speziellen Syntax für das Referenzieren von Variablen in verschiedenen Szenarien
  • Nutzen der Befehlssubstitution, um Befehlsausgaben zu erfassen
  • Durchführen von arithmetischen Operationen mit Shell-Variablen
  • Arbeiten mit Umgebungsvariablen

Wenn Sie Ihre Reise in der Welt von Linux und Shell-Skripting fortsetzen, denken Sie daran, dass Variablen leistungsstarke Werkzeuge zum Speichern und Manipulieren von Daten sind. Üben Sie die Verwendung von Variablen in Ihren Skripten, um Ihren Code flexibler und wiederverwendbarer zu machen.