Getty Images/iStockphoto

Wie Sie ein Bash-Argument skripten

Um die Administration und Aufgabenautomatisierung in Linux-Rechenzentren zu vereinfachen, eignen sich Bash-Argumente und -Skripte. Dieser Beitrag zeigt, wie das funktioniert.

Linux-Shell-Skripte werden von Administratoren verwendet, um Aufgaben zu erstellen und diese dann mit zusätzlichen Tools zu automatisieren. Diese Skripte können aus einem einzigen Befehl oder aus mehreren Zeilen bestehen, die verschiedene Aufgaben nacheinander ausführen.

Shell-Skripte werden oft auch als Bash-Skripte bezeichnet, da Bash die häufigste Shell für Linux ist. Sie rufen eine oder mehrere Anwendungen auf und weisen diese an, bestimmte Aufgaben auszuführen. Administratoren verwenden Bash-Skripte unter anderem, um Parameter und Argumente an interne Anwendungen zu übergeben. 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. Um die Aufgabe auszuführen, muss die Anwendung wissen, dass sich in einem Verzeichnis namens VerzeichnisZ Daten befinden, die sie zur Ausführung des Befehls benötigt. Das entsprechende Skript könnte wie folgt aussehen:

/usr/bin/AppX -d /VerzeichnisZ

Wenn Sie möchten, dass die Anwendung X von nun an das VerzeichnisZ nicht mehr verwendet oder in bestimmten Situationen Informationen aus anderen Verzeichnissen bezieht, müssen Sie die Zeile manuell anpassen, um die neuen Informationen zu speichern., Sie können alternativ auch Argumente verwenden.

Was sind Argumente?

Argumente stellen verschiedene Optionen dar, die an einen Befehl angehängt werden können. Fügen Sie das untenstehende Argument nach dem Beispiel-Shell-Skript ein, um Bedingungen für die Ausführung 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.
  • file 2 ist die letzte Datei, die aufgelistet wird.

Der Befehl besitzt außerdem drei Positionsparameter:

  • file
  • file 1
  • file 2

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

Wie Sie ein Skript erstellen, um Argumente zu nutzen

Jedes Bash-Skript beginnt mit dieser Zeile:

#!/bin/bash

Damit wird dem Skript mitgeteilt, dass es Bash verwenden soll. Ein einfaches Skript erlaubt die Eingabe von Argumenten, die an das Skript übergeben und für die Ausgabe verwendet werden.

Der erste Abschnitt des folgenden Skripts gibt die Gesamtzahl der an das Skript übergebenen Argumente aus, gefolgt von den Werten der einzelnen Argumente:

echo "Total Number of Arguments:" $#
echo "Argument values:" $@

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

Die Variable $@ in der zweiten Zeile enthält alle Parameter, wenn eine Funktion aufgerufen wird. Die Gesamtzahl 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

Sie erhalten diese 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 beschränken. Wenn Sie zum Beispiel nur das erste und das letzte Argument ausgeben möchten, können Sie das wie folgt tun:

echo "First Argument:" $1
echo "Tenth Argument:" ${!#}

Das Skript verwendet nun $1 als erste Variable, da $0 den Befehl ./script.sh als erstes Argument übergibt. Die Variable {!#} ist das letzte Argument, das an das Skript übergeben wird. Sie kombiniert die Zählung der Argumente mit der Indirektion. So können sie auf etwas mit einem Namen, einer Referenz oder einem Container anstatt eines Wertes verweisen.

Fügen Sie dem Skript den zweiten Abschnitt hinzu, so dass 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

Wie Sie den Bash-Skripting-Prozess erleichtern

Es gibt verschiedene Möglichkeiten, die Verwendung eines Skripts mit Argumenten zu vereinfachen. Beispielsweise können Sie ein Backup-Skript erstellen, das den Befehl rsync verwendet, um ein Verzeichnis auf eine USB-Festplatte zu sichern, die im Verzeichnis /backup eingebunden ist.

Wenn Sie das Verzeichnis bereits auf die gleiche Weise gesichert haben, könnte das Skript folgendermaßen 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 können nun ein beliebiges Verzeichnis auf der USB-Festplatte sichern, indem Sie den Namen des Verzeichnisses als Argument an das vorhandene Backup-Skript anhängen.

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

Erfahren Sie mehr über Serverbetriebssysteme