Aufgaben-Python/courses/bash/06_schleifen_arrays_und_assoziative_maps/aufgabe.sh

53 lines
2 KiB
Bash

#!/usr/bin/env bash
# ==============================================================================
# 🐧 BASH 06: SCHLEIFEN, ARRAYS, ASSOZIATIVE HASHMAPS & GETOPTS
# ==============================================================================
# 🎯 TEILZIEL 1 (TODO 1): Summiere alle übergebenen Zahlen mit einer for-Schleife.
# Iteriere über "$@" und berechne die Summe.
summiere_zahlen_array() {
local summe=0
# TODO: Iteriere über alle Argumente mit for
echo "$summe"
}
# 🎯 TEILZIEL 2 (TODO 2): CSV zeilenweise mit while read einlesen.
# Lies den String "$1" zeilenweise ein (IFS=',') und gib für jede Zeile die Spalte "$2" (1-basiert) aus.
lese_csv_zeilenweise() {
local csv_text="$1"
local spalten_nr="$2"
# TODO: Verwende while IFS=',' read -r -a felder
return 0
}
# 🎯 TEILZIEL 3 (TODO 3): Assoziatives Array (declare -A) für Server-Mapping.
# Verwalte eine Map mit: gateway=10.0.0.1, database=10.0.0.2, cache=10.0.0.3
# - Wenn "$1" == "get" -> Gib IP für Key "$2" aus
# - Wenn "$1" == "set" -> Setze Key "$2" auf "$3" und gib "$2=$3" aus
# - Wenn "$1" == "keys" -> Gib alle Schlüssel sortiert (einzelne Zeile, leerzeichengetrennt) aus
verwalte_server_hashmap() {
local aktion="$1"
local key="$2"
local wert="$3"
# TODO: Nutze declare -A
return 0
}
# 🎯 TEILZIEL 4 (TODO 4): Zähle Häufigkeiten von Elementen mit assoziativer Map.
# Nimm alle übergebenen Argumente ("$@"), zähle ihre Vorkommen mit `declare -A counter`
# und gib die Ergebnisse zeilenweise formatiert als `element: anzahl` (alphabetisch sortiert) aus.
zaehle_element_haeufigkeit() {
# TODO: Zähle Vorkommen und gib sortiert aus
return 0
}
# 🎯 TEILZIEL 5 (TODO 5): Parse CLI-Flags mit getopts.
# Parameter:
# -e <env> -> Umgebung (Standard: production)
# -p <port> -> Portnummer (Standard: 8080)
# -v -> Verbose Flag (Standard: false, wenn -v gesetzt: true)
# Ausgabeformat: "ENV=<env>,PORT=<port>,VERBOSE=<verbose>"
parse_cli_flags() {
# TODO: Verwende getopts ":e:p:v" opt
return 0
}