Shell-Skripte mit Schleifen erstellen

Red Hat Enterprise LinuxBeginner
Jetzt üben

Einführung

In dieser Herausforderung lernen Sie, wie Sie ein einfaches Shell-Skript erstellen, das Schleifenkonstrukte (wie for und while) nutzt, um Dateien oder Eingaben über die Kommandozeile zu verarbeiten. Shell-Scripting ist ein mächtiges Werkzeug, um wiederkehrende Aufgaben zu automatisieren und Arbeitsabläufe effizienter zu gestalten. Durch den Abschluss dieser Aufgabe sammeln Sie praktische Erfahrung in der Entwicklung von Skripten, die mit dynamischen Eingaben umgehen und verschiedene Operationen ausführen können.

Shell-Skript mit einer for-Schleife erstellen

In diesem Schritt erstellen Sie ein Shell-Skript, das eine for-Schleife verwendet, um eine Liste von Dateien in einem Verzeichnis zu durchlaufen und eine Operation an jeder Datei durchzuführen. Dieses Skript verdeutlicht, wie man mehrere Dateien dynamisch verarbeitet – eine Standardaufgabe im Bereich Shell-Scripting.

Aufgaben

  • Erstellen Sie ein Shell-Skript, das mittels einer for-Schleife alle Dateien in einem angegebenen Verzeichnis durchläuft.
  • Für jede gefundene Datei soll das Skript den Dateinamen und den Inhalt der Datei ausgeben.

Anforderungen

  • Das Skript muss den Namen list_files.sh tragen.
  • Das Skript muss im Verzeichnis ~/project gespeichert werden.
  • Das Skript muss mit der Shebang-Zeile #!/bin/bash beginnen.
  • Das Skript muss einen Verzeichnispfad als erstes Befehlszeilenargument akzeptieren.
  • Das Skript muss eine for-Schleife verwenden, um die Dateien im angegebenen Verzeichnis zu iterieren.
  • Bei jeder regulären Datei muss das Skript "File: " gefolgt vom reinen Dateinamen (Base Name) ausgeben und anschließend den gesamten Inhalt der Datei anzeigen.
  • Wenn kein Verzeichnisargument übergeben wird, soll das Skript eine Bedienungsanleitung (Usage Message) ausgeben und mit einem Statuscode ungleich Null beendet werden.

Beispiel

Angenommen, Sie haben das Skript list_files.sh in ~/project erstellt und ausführbar gemacht. Wenn Sie es mit ~/project als Argument aufrufen, sollte die Ausgabe etwa so aussehen:

[labex@host ~]$ cd ~/project
[labex@host project]$ chmod +x list_files.sh
[labex@host project]$ ./list_files.sh ~/project
File: file1.txt
Content of file1.txt

File: file2.txt
Content of file2.txt

File: file3.txt
Content of file3.txt

[labex@host project]$

Wenn Sie das Skript ohne Argumente ausführen, sollte ein Hinweis zur Verwendung erscheinen:

[labex@host project]$ ./list_files.sh
Usage: ./list_files.sh <directory_path>
[labex@host project]$ echo $?
1
[labex@host project]$

Der exakte Inhalt der Dateien hängt natürlich davon ab, was Sie zuvor in diese Dateien geschrieben haben.

Hinweise

  • Sie können die Spezialvariable $1 verwenden, um auf das erste an das Skript übergebene Argument zuzugreifen.
  • Um Dateien in einem Verzeichnis zu durchlaufen, können Sie ein Wildcard-Muster wie "$1"/* nutzen.
  • Verwenden Sie eine if-Anweisung mit dem Operator -f (z. B. if [ -f "$file" ]), um zu prüfen, ob es sich um eine reguläre Datei und nicht um ein Verzeichnis handelt.
  • Der Befehl basename ist hilfreich, um nur den Dateinamen aus einem vollständigen Pfad zu extrahieren. Beispielsweise gibt basename /home/labex/project/file1.txt den Wert file1.txt zurück.
  • Mit dem Befehl cat kann der Inhalt einer Datei angezeigt werden.
  • Denken Sie daran, das Skript mit chmod +x ausführbar zu machen.
  • Um zu prüfen, ob eine Variable leer ist, können Sie if [ -z "$variable" ] verwenden.
  • Um ein Skript mit einem bestimmten Statuscode zu beenden, nutzen Sie exit <status_code>.
✨ Lösung prüfen und üben

Zusammenfassung

In dieser Herausforderung haben Sie gelernt, wie man ein einfaches Shell-Skript erstellt, das eine for-Schleife nutzt, um Dateien in einem Verzeichnis zu iterieren und Operationen darauf auszuführen. Sie haben geübt, Befehlszeilenargumente entgegenzunehmen, Eingaben zu validieren und bedingte Anweisungen (if) einzusetzen, um gezielt nur reguläre Dateien zu verarbeiten. Zudem haben Sie basename zum Extrahieren von Dateinamen und cat zur Anzeige von Inhalten verwendet. Diese Fertigkeiten sind grundlegend für die Automatisierung von Aufgaben, die Datenverarbeitung und die effiziente Dateiverwaltung unter Linux – essenzielle Kenntnisse für die RHCSA-Zertifizierung und den Administrator-Alltag.