# Wie man ein einfaches Shell-Skript schreibt

Lernen Sie, wie man ein einfaches Bash-Shell-Skript schreibt. Obwohl Shell-Skripte lange, komplizierte Skripte sein können, die komplexe Aufgaben ausführen, können Sie auch lernen, wie man ein einfaches Shell-Skript in 10 Minuten schreibt. Wenn Sie Befehle auf der Befehlszeile ausführen können, ist es einfach zu lernen, wie man ein einfaches Bash-Skript schreibt.

## Anforderungen

- Ein Cloud Server unter Linux
- Eine grundlegende Vertrautheit mit der Befehlszeile

## Erstellen der Datei

Gehen Sie in Ihr Home-Verzeichnis:

```none
cd
```

Hinweis Die Verwendung von CD ohne Argumente führt Sie automatisch in Ihr Home-Verzeichnis.

Erstellen Sie ein Verzeichnis für Testskripte:

```none
mkdir myscripts
```

In dieses Verzeichnis wechseln:

```none
cd myscripts
```

In dieses Verzeichnis wechseln:

```none
nano hello
```

Die erste Zeile eines Shell-Skripts muss #! sein, gefolgt von dem Pfad zur Shell, die Sie für das Skript verwenden möchten.

Da wir dieses Skript für die Bash-Shell schreiben werden, wird die erste Zeile der Datei sein:

```none
#!/bin/bash
```

Die erste Zeile eines Shell-Skripts muss #! sein, gefolgt von dem Pfad zur Shell, die Sie für das Skript verwenden möchten.

Da wir dieses Skript für die Bash-Shell schreiben werden, wird die erste Zeile der Datei sein:

```none
# A test script
```

## Fügen Sie die Befehle hinzu und machen Sie sie ausführbar

Jeder Befehl, den Sie von der Befehlszeile aus ausführen, können Sie in ein Shell-Skript eingeben. Dies ist praktisch für:

- Befehle, die Sie häufig verwenden.
- Lange Befehle, insbesondere solche, die viele Flags verwenden.
- Befehle, die der Server automatisch als [cron job](https://en.wikipedia.org/wiki/Cron "cron job").
- Befehle, an die man sich nie ganz erinnern kann und die man jedes Mal nachschlagen muss.

Für dieses Beispiel verwenden wir einen Befehl, der die Worte “Hello world” auf der Kommandozeile wiedergibt. Füge folgendes in die Datei ein:

```none
echo "Hello world"
```

Speichern und beenden Sie die Datei.

Das Skript muss ausführbar sein, damit es ausgeführt werden kann. Geben Sie dem Skript ausführbare Berechtigungen mit dem Befehl:

```none
chmod 755 hello
```

## Ausführen des Skripts

Um das Skript auszuführen, rufen Sie es einfach über seinen Dateipfad auf. Da Sie sich im selben Verzeichnis wie das Skript befinden, können Sie es von hier aus ausführen, indem Sie es eingeben:

```none
./hello
```

Sie können das Skript von überall auf dem Server ausführen, indem Sie den vollständigen Dateipfad eingeben:

```none
/home/[your username]/myscripts/hello
```

### Füge das Skript zu deinem PFAD hinzu.

Im Gegensatz zu Ihrem Shell-Skript erfordern die meisten Linux-Befehle nicht, dass Sie den vollständigen Dateipfad jedes Mal eingeben, wenn Sie sie ausführen möchten. Dies liegt daran, dass sich diese Skripte in Ihrem PATH befinden.

Der PFAD ist die Liste der Verzeichnisse, die die Shell bei jeder Eingabe auf einen Befehl überprüft. Du kannst deinen PATH mit dem Befehl sehen:

```none
echo $PATH
```

Dies gibt die Liste der Verzeichnisse aus, die sich in Ihrem PATH befinden:

```none
jdoe@localhost:~$ echo $PATH
/home/jdoe/bin:/home/jdoe/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
```

Es gibt zwei Möglichkeiten, Ihr Shell-Skript zu Ihrem PATH hinzuzufügen:

**1. Verschieben Sie das Shell-Skript in ein Verzeichnis, das sich bereits in Ihrem PATH befindet.**

Sie können das Shell-Skript in jedes der Verzeichnisse verschieben, die als Reaktion auf den echo $PATH-Befehl aufgelistet sind. Die beste Vorgehensweise ist es, Ihre persönlichen Shell-Skripte in das Verzeichnis /usr/local/bin zu legen:

```none
sudo mv hello /usr/local/bin
```

Sie können das Skript dann von überall mit dem Befehl ausführen:

```none
hello
```

2\. Füge das Verzeichnis des Shell-Skripts zu deinem PATH hinzu.

Du kannst mit dem Befehl ein beliebiges Verzeichnis zu deinem PATH hinzufügen:

```none
export PATH=$PATH:[path to directory]
```

Wenn der Benutzer jdoe beispielsweise /home/jdoe/myscripts zum PATH hinzufügen möchte, lautet der Befehl:

```none
export PATH=$PATH:/home/jdoe/myscripts
```

Sie können das Skript dann von überall mit dem Befehl ausführen:

```none
hello
```

## Verwendung von Eingaben und Variablen

Ihre Skripte können Variablen verwenden, und Sie können den Benutzer zur Eingabe auffordern. Dadurch entsteht ein interaktives Skript, mit dem Sie ihm bei jeder Ausführung neue Informationen geben können.

Beginnen wir damit, eine neue Datei mit dem Namen greetme zu erstellen und sie zur Bearbeitung zu öffnen:

```none
nano greetme
```

Stellen Sie wie bisher sicher, dass die erste Zeile des Skripts der Pfad zur Shell ist:

```none
#!/bin/bash
```

Füge einen Kommentar hinzu:

```none
# A simple script to experiment with user input
```

Die erste Zeile des Skripts ist das, was das Skript sagt, wenn Sie es aufrufen:

```none
echo -e "Hello user, please tell me which state you live in: "
```

Hinweis Wir verwenden dafür echo -e, da -e es dem Befehl erlaubt, Sonderzeichen zu verarbeiten.

Die nächste Zeile weist das Skript an, Ihre Eingabe an einer Eingabeaufforderung zu akzeptieren:

```none
read state
```

Die letzte Zeile ist die Antwort des Skripts:

```none
echo "I have heard that $state is lovely this time of year."
```

Das gesamte Skript lautet wie folgt:

```none
#!/bin/bash
# A simple script to experiment with user input
echo -e "Hello user, please tell me which state you live in: "
read state
echo "I have heard that $state is lovely this time of year."
```

Speichern und beenden Sie die Datei. Dann mach es mit dem Befehl ausführbar:

```none
chmod 755 greetme
```

Sie können nun die Datei ausführen und die Ergebnisse sehen:

```none
jdoe@localhost:~/myscripts$ greetme
Hello user, please tell me which state you live in:
California
I have heard that California is lovely this time of year.
```


This is a markdown version of: [https://www.ionos.de/digitalguide/server/knowhow/wie-man-ein-einfaches-shell-skript-schreibt/](https://www.ionos.de/digitalguide/server/knowhow/wie-man-ein-einfaches-shell-skript-schreibt/) for AI/LLM consumption.