Unix / Linux - Verwendung von Shell-Arrays

Hallo, ambitionierte Programmierer! Willkommen zu unserer Lektion über die Verwendung von Arrays in Unix- und Linux-Shell-Skripten. Ich freue mich sehr, Euch auf dieser aufregenden Reise in die Welt der Datenstrukturen zu führen. Als jemand, der seit Jahren Informatik unterrichtet, kann ich Euch versichern, dass das Beherrschen von Arrays eine helt neue Welt der Möglichkeiten in Euren Programmierabenteuern eröffnen wird. Also, tauchen wir ein!

Unix / Linux - Using Arrays

Was sind Arrays?

Bevor wir uns den Details widmen, lassen Sie uns verstehen, was Arrays sind. Stellt Euch vor, Ihr habt eine Menge Früchte und entscheidet Euch stattdessen, sie in einem schönen, organisierten Obstkorbf zu platzieren, anstatt sie in der Küche verstreut zu lassen. Das ist im Grunde genommen, was ein Array in der Programmierung ist – ein Behälter, der mehrere Elemente desselben Typs ordentlich anordnet, um leicht darauf zugreifen zu können.

Definition von Array-Werten

In Unix/Linux-Shell-Skripten ist die Definition von Arrays ein Kinderspiel. Lassen Sie uns mit einem einfachen Beispiel beginnen:

fruits=("apple" "banana" "cherry" "date")

Hier haben wir ein Array namens fruits mit vier Elementen erstellt. Es ist wie unser virtueller Obstkorb! Jedes Element ist eine separate Zeichenkette, die in Anführungszeichen eingeschlossen und durch Leerzeichen getrennt ist.

Aber wartet, es gibt mehr! Ihr könnt auch Arrays elementweise definieren:

vegetables[0]="carrot"
vegetables[1]="broccoli"
vegetables[2]="spinach"

In diesem Fall geben wir manuell den Index (Position) jedes Elements an. Denkt daran, dass in den meisten Programmiersprachen, einschließlich Shell-Skripten, Array-Indizes bei 0 beginnen, nicht bei 1. Das ist ein Kuriosum, das viele Anfänger stutzig macht, also denkt daran!

Eine spaßige Methode, um Array-Indizierung zu merken

Ich sage meinen Schülern oft, sie sollen sich vorstellen, sie wären in einem Rennen. Die Person an der Startlinie ist nicht Nummer 1 – sie ist Nummer 0! Es ist ein bisschen seltsam, aber es hilft zu merken, dass Arrays bei Index 0 beginnen.

Zugriff auf Array-Werte

Nun, da wir unsere virtuellen Körbe gefüllt haben, wie holen wir die Gegenstände heraus? Lassen Sie uns erforschen!

Zugriff auf individuelle Elemente

Um ein bestimmtes Element zuzugreifen, verwenden wir seinen Index:

echo ${fruits[2]}

Dieser Befehl wird ausgeben: cherry

Warum? Weil cherry an Index 2 ist (denkt daran, wir zählen ab 0).

Zugriff auf alle Elemente

Was ist, wenn wir alle unsere Früchte auf einmal sehen wollen? Wir können das @-Symbol verwenden:

echo ${fruits[@]}

Dies wird anzeigen: apple banana cherry date

Zugriff auf die Array-Länge

Interessiert daran, wie viele Elemente in unserem Array sind? Hier ist, wie Ihr es herausfindet:

echo ${#fruits[@]}

Dies wird ausgeben: 4

Das #-Symbol vor dem Array-Namen gibt uns die Länge des Arrays.

Praktische Beispiele

Lassen Sie uns unser Wissen mit einigen realen Weltbeispielen anwenden!

Beispiel 1: Grüße an mehrere Benutzer

users=("Alice" "Bob" "Charlie")
for user in "${users[@]}"
do
echo "Hello, $user!"
done

Dieses Skript wird ausgeben:

Hello, Alice!
Hello, Bob!
Hello, Charlie!

Hier verwenden wir eine for-Schleife, um durch unser Array zu iterieren und jeden Benutzer individuell zu begrüßen. Es ist, als hätten wir einen freundlichen Roboter, der nie vergisst, Hello zu sagen!

Beispiel 2: Berechnung der Gesamtfiligröße

files=("document.txt" "image.jpg" "script.sh")
total_size=0
for file in "${files[@]}"
do
size=$(stat -f%z "$file")
total_size=$((total_size + size))
done
echo "Total size of files: $total_size bytes"

Dieses Skript berechnet die Gesamtauflösung mehrerer Dateien. Es ist besonders nützlich, wenn Ihr schnell die Dateigrößen summieren wollt, ohne sie manuell hinzuzufügen.

Fortgeschrittene Array-Techniken

Nun, da wir die Grundlagen abgedeckt haben, lassen Sie uns einige fortgeschrittene Techniken erkunden!

Slicing Arrays

Ihr könnt einen Abschnitt eines Arrays extrahieren, indem Ihr slicing verwendet:

colors=("red" "green" "blue" "yellow" "purple")
echo ${colors[@]:1:3}

Dies wird ausgeben: green blue yellow

Hier bedeutet 1:3, "beginne bei Index 1 und gib mir 3 Elemente".

Hinzufügen von Elementen zu einem Array

Ihr könnt Elemente zu einem bestehenden Array hinzufügen:

fruits+=("elderberry")
echo ${fruits[@]}

Dies wird jetzt elderberry am Ende unseres Früchte-Arrays enthalten.

Entfernen von Elementen aus einem Array

Das Entfernen von Elementen ist etwas schwieriger. Wir können den unset-Befehl verwenden:

unset fruits[1]
echo ${fruits[@]}

Dies entfernt das zweite Element (denkt daran, Index 1) aus unserem Früchte-Array.

Häufige Array-Methoden

Hier ist eine Tabelle, die einige häufige Array-Operationen in Unix/Linux-Shell-Skripten zusammenfasst:

Operation Syntax Beschreibung
Array definieren array=("elem1" "elem2" "elem3") Erstellt ein neues Array
Element zugreifen ${array[index]} Holt das Element an der angegebenen Position
Alle Elemente zugreifen ${array[@]} Holt alle Elemente
Array-Länge ${#array[@]} Gibt die Anzahl der Elemente zurück
Element hinzufügen array+=("new_elem") Fügt ein neues Element zum Array hinzu
Element entfernen unset array[index] Entfernt das Element an der angegebenen Position
Array slicen ${array[@]:start:count} Extrahiert einen Abschnitt des Arrays

Schlussfolgerung

Glückwunsch! Ihr habt die ersten Schritte in die Welt der Arrays in Unix/Linux-Shell-Skripten unternommen. Wir haben die Definition von Arrays, den Zugriff auf ihre Werte und sogar einige fortgeschrittene Techniken behandelt. Denkt daran, Übung macht den Meister, also zögert nicht, diese Konzepte in Euren eigenen Skripten auszuprobieren.

Arrays sind unglaublich vielseitige Werkzeuge, die viele Programmieraufgaben vereinfachen können. Ob Ihr eine Liste von Benutzern verwaltet, mehrere Dateien verarbeitet oder Daten organisiert, Arrays werden Eure treuen Begleiter auf Eurer Programmierreise sein.

Als wir uns verabschieden, erinnere ich mich an ein Zitat des berühmten Informatikers Alan Kay: "Einfache Dinge sollten einfach sein, komplexe Dinge sollten möglich sein." Arrays verkörpern dieses Prinzip perfekt – sie sind einfach zu verwenden, aber sie eröffnen eine Welt voller komplexer Möglichkeiten.

Weiter codieren, weiter erkunden und vor allem Spaß mit Arrays haben! Sie sind nicht nur Datenstrukturen; sie sind die Bausteine Eurer zukünftigen Programmiermeisterwerke. Bis zum nächsten Mal, fröhliches Skripten!

Credits: Image by storyset