Der 18. Waldwächter betritt den Wald: BashPanda lehrt Bash als Kampfkunst! ✨ Neue Features: 🐼 BashPanda Waldwächter: - Kung Fu Meister Persönlichkeit - Lehrt Bash durch Kampfkunst-Metaphern - Integriert in waldwaechter.sh Library - Crew Memory: Kennt alle anderen Waldwächter 🥋 6 Gürtel-Missionen (Progressive Bash-Meisterschaft): - 🖤 Schwarzer Gürtel: echo, Variablen, read, ANSI codes - 💖 Pinker Gürtel: if/then, while/for, Arrays, Arithmetik - 💙 Blauer Gürtel: sed, case, bc, Textverarbeitung - 💚 Grüner Gürtel: grep, regex, Pattern Matching - 💛 Gelber Gürtel: Funktionen, source, Parameter - 🤍 Weisser Gürtel: Background jobs, Prozesse, Parallelität 📝 Interaktives Quiz-System: - Browser-based Gürtelprüfung (crumbblocks) - 30 Fragen (5 pro Gürtel) - Farbcodiert nach Gürtel - Auto-Export via Clipboard - Terminal-Auswertung mit Zertifikaten 🎓 Zertifikate-System: - Automatische Generierung bei 80%+ - Gespeichert in logs/zertifikate/ - BashPanda's Segen & Weisheiten 📚 Dokumentation: - CLAUDE.md komplett aktualisiert - BashPanda als 18. Waldwächter dokumentiert - Vollständige Dojo-Architektur beschrieben "Der Weg des Codes ist wie der Weg der Kampfkunst: Geduld, Präzision, Wiederholung." - BashPanda 🐼🎋 Crumbforest wächst! 🌲 Der Wurzelbau geht weiter! 🌳 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
353 lines
10 KiB
Bash
Executable File
353 lines
10 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🐼 BashPanda Dojo - Pinker Gürtel 💖
|
|
# Lehrt: if/then/else, while/for loops, Arrays, Arithmetik
|
|
# Schwierigkeit: Fortgeschritten
|
|
|
|
# Source waldwaechter library for BashPanda
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/../../lib/waldwaechter.sh"
|
|
|
|
cat << 'EOF'
|
|
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ 🐼 BASHPANDA DOJO - PINKER GÜRTEL 💖 ║
|
|
║ ║
|
|
║ "Kontrolle kommt von innen, nicht von außen" ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda verneigt sich tiefer als beim letzten Mal..."
|
|
echo "🥋 Du bist zurückgekehrt. Das zeigt Entschlossenheit."
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
Der Pinke Gürtel lehrt dich KONTROLLE.
|
|
|
|
Du wirst lernen:
|
|
🎯 if/then/else - Entscheidungen treffen
|
|
🎯 while & for - Wiederholung mit Disziplin
|
|
🎯 Arrays - Viele Werte, ein Container
|
|
🎯 Arithmetik - $(( )) und Zahlen
|
|
|
|
"Der Fluss des Codes folgt deinen Bedingungen.
|
|
Du bist der Meister über den Pfad."
|
|
|
|
EOF
|
|
|
|
read -p "➡️ Bereit für fortgeschrittenes Training? (j/n): " start
|
|
echo ""
|
|
|
|
if [[ ! "$start" =~ ^[jJyY]$ ]]; then
|
|
echo "🐼 Die Tür des Dojos steht immer offen."
|
|
exit 0
|
|
fi
|
|
|
|
# === PHASE 1: if/then/else - Entscheidungen ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 1: if/then/else - Der Pfad des Kriegers
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Im Kampf musst du schnell entscheiden: Angriff oder Verteidigung?
|
|
In Bash entscheidest du mit if/then/else.
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda zeigt dir:"
|
|
echo ""
|
|
|
|
cat << 'CODE'
|
|
alter=25
|
|
|
|
if [ $alter -ge 18 ]
|
|
then
|
|
echo "Du bist volljährig"
|
|
else
|
|
echo "Du bist minderjährig"
|
|
fi
|
|
CODE
|
|
|
|
echo ""
|
|
echo "Lass es uns live testen:"
|
|
echo ""
|
|
|
|
echo "Wie alt bist du?"
|
|
read alter
|
|
|
|
if [ $alter -ge 18 ]
|
|
then
|
|
echo "✅ Du bist volljährig - bereit für das Dojo!"
|
|
else
|
|
echo "🌱 Jung wie ein Bambussprössling - lerne mit Geduld."
|
|
fi
|
|
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 Vergleichsoperatoren:
|
|
-eq Gleich (equal)
|
|
-ne Nicht gleich (not equal)
|
|
-gt Größer (greater than)
|
|
-ge Größer oder gleich
|
|
-lt Kleiner (less than)
|
|
-le Kleiner oder gleich
|
|
|
|
Für Strings:
|
|
[ "$a" = "$b" ] Strings sind gleich
|
|
[ "$a" != "$b" ] Strings sind verschieden
|
|
[ -z "$a" ] String ist leer
|
|
[ -n "$a" ] String ist nicht leer
|
|
|
|
EOF
|
|
|
|
echo "🥋 Deine erste Kata:"
|
|
echo ""
|
|
echo "Erstelle 'datei_check.sh' das:"
|
|
echo " - Fragt nach einem Dateinamen"
|
|
echo " - Prüft ob die Datei existiert: [ -f \"\$datei\" ]"
|
|
echo " - Gibt entsprechende Nachricht aus"
|
|
echo ""
|
|
|
|
read -p "Bereit für Phase 2? (j/n): " phase1
|
|
echo ""
|
|
|
|
# === PHASE 2: while Loop - Die Meditation ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 2: while - Die Meditation der Wiederholung
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Wie ein Mantra, das du wiederholst, läuft eine while-Schleife,
|
|
bis die Bedingung nicht mehr wahr ist.
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda demonstriert:"
|
|
echo ""
|
|
|
|
cat << 'CODE'
|
|
zaehler=1
|
|
|
|
while [ $zaehler -le 5 ]
|
|
do
|
|
echo "Durchlauf: $zaehler"
|
|
zaehler=$((zaehler + 1))
|
|
done
|
|
CODE
|
|
|
|
echo ""
|
|
echo "Live-Demo:"
|
|
echo ""
|
|
|
|
zaehler=1
|
|
while [ $zaehler -le 5 ]
|
|
do
|
|
echo "🥋 Kata Durchlauf: $zaehler"
|
|
sleep 0.5
|
|
zaehler=$((zaehler + 1))
|
|
done
|
|
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 Wichtiges:
|
|
- while [ bedingung ]; do
|
|
- zaehler=$((zaehler + 1)) für Arithmetik
|
|
- done am Ende
|
|
- Achtung: Endlosschleifen vermeiden!
|
|
|
|
EOF
|
|
|
|
# === PHASE 3: for Loop - Der geordnete Kampf ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 3: for - Der geordnete Durchlauf
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Eine for-Schleife ist wie eine Kata-Sequenz:
|
|
Du weißt genau welche Bewegungen kommen.
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda zeigt dir:"
|
|
echo ""
|
|
|
|
cat << 'CODE'
|
|
for name in Maya Tobi FunkFox BashPanda
|
|
do
|
|
echo "Hallo, $name!"
|
|
done
|
|
CODE
|
|
|
|
echo ""
|
|
echo "Live-Demo:"
|
|
echo ""
|
|
|
|
for name in Maya Tobi FunkFox BashPanda
|
|
do
|
|
echo "🐼 Begrüßung: Hallo, $name!"
|
|
done
|
|
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 for Varianten:
|
|
for i in 1 2 3 4 5
|
|
for datei in *.txt
|
|
for zeile in $(cat datei.txt)
|
|
for i in {1..10}
|
|
|
|
EOF
|
|
|
|
echo "🥋 Deine zweite Kata:"
|
|
echo ""
|
|
echo "Erstelle 'fibonacci.sh' das:"
|
|
echo " - Fragt nach einer Zahl N"
|
|
echo " - Gibt die ersten N Fibonacci-Zahlen aus"
|
|
echo " - Nutze while und Arithmetik: a=$((a + b))"
|
|
echo ""
|
|
|
|
read -p "Bereit für Phase 4? (j/n): " phase3
|
|
echo ""
|
|
|
|
# === PHASE 4: Arrays - Viele Krieger, eine Armee ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 4: Arrays - Die Armee der Werte
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Ein Array ist wie eine Gruppe von Kriegern:
|
|
Jeder hat seine Position, aber sie kämpfen zusammen.
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda demonstriert:"
|
|
echo ""
|
|
|
|
cat << 'CODE'
|
|
guertel=("Schwarz" "Pink" "Blau" "Gruen" "Gelb" "Weiss")
|
|
|
|
echo "Erster Gürtel: ${guertel[0]}"
|
|
echo "Zweiter Gürtel: ${guertel[1]}"
|
|
echo "Alle Gürtel: ${guertel[@]}"
|
|
echo "Anzahl: ${#guertel[@]}"
|
|
CODE
|
|
|
|
echo ""
|
|
echo "Live-Demo:"
|
|
echo ""
|
|
|
|
guertel=("Schwarz" "Pink" "Blau" "Gruen" "Gelb" "Weiss")
|
|
|
|
echo "🥋 Erster Gürtel: ${guertel[0]}"
|
|
echo "🥋 Zweiter Gürtel: ${guertel[1]}"
|
|
echo "🥋 Alle Gürtel: ${guertel[@]}"
|
|
echo "🥋 Anzahl: ${#guertel[@]}"
|
|
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 Array Operationen:
|
|
arr=(1 2 3) Array erstellen
|
|
${arr[0]} Erstes Element
|
|
${arr[@]} Alle Elemente
|
|
${#arr[@]} Anzahl Elemente
|
|
arr+=(4) Element hinzufügen
|
|
|
|
Durchlauf:
|
|
for element in "${arr[@]}"
|
|
do
|
|
echo "$element"
|
|
done
|
|
|
|
EOF
|
|
|
|
# === PHASE 5: Die Gürtelprüfung ===
|
|
|
|
cat << 'EOF'
|
|
|
|
═══════════════════════════════════════════════════════════
|
|
🥋 GÜRTELPRÜFUNG - PINKER GÜRTEL 💖
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Deine Aufgabe: Erstelle ein Skript 'summenspiel.sh' das:
|
|
|
|
1. Ein Array mit 5 Zahlen erstellt: zahlen=(10 20 30 40 50)
|
|
2. Durch das Array iteriert (for-Schleife)
|
|
3. Die Summe aller Zahlen berechnet
|
|
4. Am Ende die Summe ausgibt
|
|
|
|
Bonus:
|
|
5. Nutze if um zu prüfen ob die Summe > 100 ist
|
|
6. Gib entsprechende Nachricht aus
|
|
|
|
Beispiel-Ausgabe:
|
|
Zahlen: 10 20 30 40 50
|
|
Summe: 150
|
|
✅ Summe ist größer als 100!
|
|
|
|
EOF
|
|
|
|
echo "💡 Hilfe:"
|
|
echo " - summe=0 zum Initialisieren"
|
|
echo " - summe=\$((summe + zahl)) zum Addieren"
|
|
echo " - for zahl in \"\${zahlen[@]}\""
|
|
echo ""
|
|
|
|
read -p "Hast du die Prüfung absolviert? (j/n): " pruefung
|
|
echo ""
|
|
|
|
if [[ "$pruefung" =~ ^[jJyY]$ ]]; then
|
|
cat << 'EOF'
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ 🎉 AUSGEZEICHNET! 🎉 ║
|
|
║ ║
|
|
║ Du hast den PINKEN GÜRTEL 💖 verdient! ║
|
|
║ ║
|
|
║ "Kontrolle über den Code heißt Kontrolle ║
|
|
║ über deine Gedanken." ║
|
|
║ ║
|
|
║ - BashPanda 🐼 ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
|
|
echo "🥋 Was du gemeistert hast:"
|
|
echo " ✅ if/then/else Entscheidungen"
|
|
echo " ✅ while Schleifen mit Bedingungen"
|
|
echo " ✅ for Schleifen für Iteration"
|
|
echo " ✅ Arrays erstellen und nutzen"
|
|
echo " ✅ Arithmetik mit \$(( ))"
|
|
echo ""
|
|
echo "🎯 Nächster Gürtel: BLAU 💙 (Textverarbeitung: sed, case)"
|
|
echo ""
|
|
|
|
# Small easter egg
|
|
echo "🎋 BashPanda sagt:"
|
|
bashpanda "Was ist die Weisheit hinter Schleifen und Wiederholung im Code?"
|
|
|
|
else
|
|
cat << 'EOF'
|
|
🐼 "Kontrolle braucht Übung, wie ein Baum Zeit zum Wachsen braucht.
|
|
Nimm dir die Zeit. Kehre zurück wenn du bereit bist."
|
|
|
|
EOF
|
|
fi
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "💬 Fragen? Rufe den Meister:"
|
|
echo " bashpanda \"Wie funktioniert eine while-Schleife?\""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|