Bash Scripting Grundlagen | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

Bash Scripting Grundlagen

Zuletzt aktualisiert: 11.01.2026 um 12:06 Uhr

Bash Scripting Grundlagen

Bash-Skripte automatisieren wiederkehrende Aufgaben auf Linux-Systemen. Von einfachen Befehls-Ketten bis zu komplexen Automatisierungen - Bash ist das Schweizer Taschenmesser der Systemadministration.

Erstes Skript

#!/bin/bash
# mein-skript.sh

echo "Hallo Welt!"
echo "Heute ist $(date)"
# Ausführbar machen
chmod +x mein-skript.sh

# Ausführen
./mein-skript.sh

Variablen

#!/bin/bash

# Variablen setzen (kein Leerzeichen um =)
NAME="Max"
ALTER=25

# Variablen verwenden
echo "Name: $NAME"
echo "Alter: ${ALTER} Jahre"

# Befehlsausgabe speichern
DATUM=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)

# Umgebungsvariablen
echo "Home: $HOME"
echo "User: $USER"
echo "PWD: $PWD"

Benutzereingabe

#!/bin/bash

echo "Wie heißt du?"
read NAME

echo "Hallo $NAME!"

# Mit Prompt
read -p "Dein Alter: " ALTER
echo "Du bist $ALTER Jahre alt"

# Passwort (versteckt)
read -sp "Passwort: " PASS

Bedingungen (if)

#!/bin/bash

ZAHL=10

if [ $ZAHL -gt 5 ]; then
    echo "Größer als 5"
elif [ $ZAHL -eq 5 ]; then
    echo "Gleich 5"
else
    echo "Kleiner als 5"
fi

# Datei prüfen
if [ -f "/etc/passwd" ]; then
    echo "Datei existiert"
fi

# Verzeichnis prüfen
if [ -d "/var/www" ]; then
    echo "Verzeichnis existiert"
fi

# String-Vergleich
if [ "$NAME" == "Max" ]; then
    echo "Hallo Max!"
fi

Vergleichsoperatoren

Operator Bedeutung
-eq Gleich (equal)
-ne Ungleich (not equal)
-gt Größer (greater than)
-lt Kleiner (less than)
-f Datei existiert
-d Verzeichnis existiert
-z String ist leer

Schleifen

For-Schleife

#!/bin/bash

# Liste durchlaufen
for NAME in Max Anna Tom; do
    echo "Hallo $NAME"
done

# Zahlenbereich
for i in {1..5}; do
    echo "Nummer: $i"
done

# Dateien durchlaufen
for FILE in /var/log/*.log; do
    echo "Log: $FILE"
done

While-Schleife

#!/bin/bash

COUNTER=1
while [ $COUNTER -le 5 ]; do
    echo "Durchlauf: $COUNTER"
    ((COUNTER++))
done

# Datei zeilenweise lesen
while read LINE; do
    echo "$LINE"
done < /etc/hosts

Funktionen

#!/bin/bash

# Funktion definieren
backup_erstellen() {
    local QUELLE=$1
    local ZIEL=$2
    
    echo "Backup von $QUELLE nach $ZIEL..."
    cp -r "$QUELLE" "$ZIEL"
    echo "Fertig!"
}

# Funktion aufrufen
backup_erstellen /var/www /backup/www

Parameter

#!/bin/bash

echo "Skript-Name: $0"
echo "Parameter 1: $1"
echo "Parameter 2: $2"
echo "Alle Parameter: $@"
echo "Anzahl: $#"

# Prüfen ob Parameter vorhanden
if [ -z "$1" ]; then
    echo "Verwendung: $0 <parameter>"
    exit 1
fi

Praktisches Beispiel: Backup-Skript

#!/bin/bash

# Variablen
BACKUP_DIR="/backup"
DATUM=$(date +%Y-%m-%d)
QUELLEN=("/var/www" "/etc" "/home")

# Backup-Verzeichnis erstellen
mkdir -p "$BACKUP_DIR/$DATUM"

# Backup durchführen
for QUELLE in "${QUELLEN[@]}"; do
    NAME=$(basename "$QUELLE")
    tar -czf "$BACKUP_DIR/$DATUM/$NAME.tar.gz" "$QUELLE" 2>/dev/null
    
    if [ $? -eq 0 ]; then
        echo "✓ $QUELLE gesichert"
    else
        echo "✗ Fehler bei $QUELLE"
    fi
done

# Alte Backups löschen (älter als 7 Tage)
find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;

echo "Backup abgeschlossen!"

Debugging

# Befehle anzeigen
bash -x mein-skript.sh

# Im Skript aktivieren
set -x  # Debug an
set +x  # Debug aus

# Bei Fehler abbrechen
set -e

Weitere Hilfe

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120