💡 Was macht das? Wenn kein Argument übergeben wird, läuft das Skript wie gewohnt durch (main). Wenn ein Funktionsname übergeben wird, wird nur diese Funktion mit optionalen Argumenten ausgeführt. 🔄 Beispielaufrufe # Führt das ganze Skript aus (wie bisher) ./miyagi_backup.sh -c /etc/miyagi.conf # Führt nur Updates aus ./miyagi_backup.sh run_updates # Nur das Backup starten ./miyagi_backup.sh run_pbs_backup # Nur Konfiguration schreiben ./miyagi_backup.sh write_zsync_config 🧱 Optional: Hilfe-Befehl Füge am Anfang noch das hinzu: if [[ "${1:-}" == "help" ]]; then echo "Verfügbare Funktionen:" declare -F | awk '{print " - " $3}' exit 0 fi Dann kannst du z.B. aufrufen: ./miyagi_backup.sh help Und bekommst alle verfügbaren Funktionsnamen. 📌 Hinweis Funktionen wie run_pbs_backup brauchen Variablen aus der Config. Du kannst sicherstellen, dass source "$CONFIG_FILE" immer ausgeführt wird, indem du das nicht in main, sondern außerhalb (oben) stehen lässt - so wie im überarbeiteten Skript oben. ✅ Fazit Durch den Wechsel auf ein solches „Funktions-Router“-Muster kannst du dein Skript: modular testen gezielt einsetzen (z.B. nur Snapshot, nur Update) einfacher debuggen cron- oder CI-kompatibel machen