cherezoff - stock.adobe.com

Anleitung: So skripten Sie ein Bash-Argument

Bash-Skripte und -Argumente können die Administration im Linux-Rechenzentrum vereinfachen und Aufgaben automatisieren. In dieser Anleitung zeigen wir Ihnen, wie das funktioniert.

Mit Linux-Shell-Skripten erstellen Administratoren Aufgaben und automatisieren sie im Anschluss mit zusätzlichen Tools. Diese Skripte können aus einem einzigen Befehl bestehen, oder sie enthaltene mehrere Zeilen, die verschiedene Aufgaben nacheinander ausführen.

Shell-Skripte werden oft auch als Bash-Skripte bezeichnet, weil Bash die häufigste Shell für Linux ist. Sie rufen eine oder mehr Anwendungen auf, und weisen diese an, bestimmte Aufgaben auszuführen. Administratoren benutzen Bash-Skripte unter anderem, um Parameter und Argumente an interne Anwendungen weiterzugeben. Das hat den Vorteil, dass sie das Skript nicht manuell anpassen müssen, wenn sich die Werte für die entsprechenden Anwendungen ändern.

Ein Beispiel: Sie schreiben ein Skript für die Anwendung X. Zum Ausführen der Aufgabe muss die App wissen, dass sich in einem Directory namens VerzeichnisZ Daten befinden, die sie zum Ausführen des Befehls benötigt. Das zugehörige Skript könnte folgendermaßen aussehen:

/usr/bin/AppX -d /VerzeichnisZ

Möchten Sie, dass die App X VerzeichnisZ von nun an nicht mehr benutzt oder in bestimmten Situationen Informationen aus anderen Directories zieht, müssen Sie die Zeile manuell anpassen, um die neuen Informationen zu hinterlegen. Alternativ dazu können Sie Argumente benutzen.

Was sind Argumente?

Argumente repräsentieren verschiedene Optionen, die man an einen Befehl anhängen kann. Fügen Sie das untenstehende Argument nach dem Beispiel-Shell-Skript ein, um Bedingungen für das Ausführen des Befehls festzulegen:

ls -I README file 'file 1' file2

Der Befehl hat nun fünf Argumente:

  • /usr/bin/ls ist wie bisher der eigentliche Befehl
  • -I weist ls an, die nachfolgende Zeichenkette (AppX -d /VerzeichnisZ) zu ignorieren
  • file, ist der Name einer Datei, die aufgelistet wird
  • file 1 ist die nächste Datei, die aufgelistet wird
  • und file2, die letzte Datei, die aufgelistet wird

Der Befehl besitzt außerdem drei Positionsparameter:

  • file
  • file 1
  • file2

Ein Skript bezeichnet Positionsparameter als $0, $1, $2, $3, $4 und so weiter. Mit diesen Parametern können Sie Argumente von der Kommandozeile (Command Line Interface, CLI) an ein Skript übermitteln.

Ein Skript erstellen, um Argumente zu nutzen

Jedes Bash-Skript beginnt mit der Zeile

#!/bin/bash

Damit weiß das Skript, dass es Bash verwenden soll. Ein einfaches Skript erlaubt es Ihnen, Argumente einzugeben, die an das Skript übergeben und für die Ausgabe benutzt werden.

Die erste Sektion des nachfolgenden Skripts gibt die gesamte Anzahl der Argumente aus, die dem Skript übermittelt werden und danach die Werte der einzelnen Argumente:

echo "Total Number of Arguments:" $#

echo "Argument values:" $@

$# gibt die Anzahl der Argumente aus, die an ein Skript übermittelt wurden. Das bedeutet, Sie können so viele oder so wenige Argumente übermitteln, wie Sie benötigen. Benutzen Sie diese Variable, wird das erste Argument als $0 bezeichnet, das zweite als $1, das dritte als $2 und so weiter.

Die Variable $@ in der zweiten Zeile erfasst alle Parameter, wenn eine Funktion aufgerufen wird. Die gesamte Anzahl der Argumente wird nicht als Wert ausgegeben, sondern so angezeigt, wie Sie sie eingegeben haben.

Um das eigentliche Bash-Skript zu erstellen, geben Sie diesen Befehl ein:

nano script.sh

Kopieren Sie nun diese Zeilen in das Skript:

#!/bin/bash

echo "Total Number of Arguments:" $#

echo "Argument values:" $@

Speichern und schließen Sie die Datei. Erstellen Sie nun ein ausführbares Programm:

chmod u+x script.sh

Führen Sie das Skript ohne irgendwelche Argumente aus, ist die Ausgabe wie folgt:

Total Arguments: 0

All Arguments values:

Führen Sie das Skript stattdessen mit den nachfolgenden Argumenten aus…

./script.sh ARG0 ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9

… erhalten Sie die Ausgabe:

Total Arguments: 10

All Arguments values: ARG0 ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9

Sie können dieses Skript noch weiter an Ihre Bedürfnisse anpassen, indem Sie es auf bestimmte Argumente eingrenzen. Wollen Sie zum Beispiel nur das erste und letzte Argument ausgeben, könnten Sie das so realisieren:

echo "First Argument:" $1

echo "Tenth Argument:" ${!#}

Das Skript benutzt nun $1 als erste Variable, weil $0 den Befehl ./script.sh als erstes Argument ausgibt. Die Variable {!#} ist das letzte Argument, das an das Skript übermittelt wurde. Es kombiniert die Zählung der Argumentation mit Indirektion. Damit können Sie auf etwas mit einem Namen, einer Referenz oder einem Container anstatt eines Wertes Bezug nehmen.

Fügen Sie dem Skript die zweite Sektion an, damit es wie folgt aussieht:

#!/bin/bash

echo "Total Number of Arguments:" $#

echo "Argument values:" $@

echo "First Argument:" $1

echo "Last Argument:" ${!#}

Führen Sie den Befehl folgendermaßen aus:

./script.sh ARG0 ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9

Die Ausgabe sollte nun ergeben:

Total Arguments: 10

All Arguments values: ARG0 ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9

First Argument: ARG0

Last Argument: ARG9

Den Bash-Skripting-Prozess erleichtern

Sie haben verschiedene Möglichkeiten, um das Verwenden eines Skripts mit Argumenten zu vereinfachen. Zum Beispiel könnten Sie ein Backup-Skript erstellen, das mit dem Befehl rsync ein Verzeichnis auf eine USB-Festplatte zu sichern, die in das Verzeichnis /backup eingebunden ist.

Haben Sie das Verzeichnis schon einmal auf dieselbe Weise gesichert, könnte das Skript wie folgt aussehen:

in/bash

rsync -av --delete /Directory1/ /backup

Nennen Sie dieses Skript backup.sh.

Haben Sie nun ein neues Verzeichnis, zum Beispiel des Namens PROJEKT4, können Sie es mit dem nachfolgenden Befehl in das Verzeichnis /backup sichern.

./backup.sh PROJEKT4

Sie sichern nun jedes Verzeichnis ihrer Wahl auf der USB-Festplatte, indem Sie den Namen des Verzeichnisses als Argument an das bereits vorhandene Backup-Skript anfügen.

Verwenden Sie die Anleitungen in diesem Artikel als Ausgangspunkt, um Ihr Wissen über Argumente auszubauen. Bash-Skripte sind mitunter sehr leistungsstarke Tools, um die Administration von Linux zu vereinfachen.

Erfahren Sie mehr über Serverbetriebssysteme