2 KiB
2 KiB
Bash 06: Schleifen, Arrays & Assoziative Maps 🔄
Willkommen zu Modul 06 des Linux Bash & DevOps Lehrpfads!
In diesem Modul meisterst du for- und while-Schleifen, sicheres zeilenweises Einlesen von Streams (while IFS= read -r), indizierte Arrays, assoziative Arrays (declare -A) als Hashmaps sowie professionelles CLI-Parameter-Parsing mit getopts.
💡 1. Das Wichtigste in Kürze
Schleifenkonstrukte
for item in "${arr[@]}": Iteriert über Elemente eines Arrays.while IFS= read -r line; do ... done: Sicheres zeilenweises Einlesen ohne Whitespace-Trimming.
Indizierte Arrays
SERVERS=("web01" "web02" "db01")
SERVERS+=("cache01") # Element anhängen
echo ${SERVERS[0]} # web01
echo ${#SERVERS[@]} # 4 (Länge des Arrays)
echo "${SERVERS[@]}" # Alle Elemente
Assoziative Arrays (Hashmaps / Dictionaries)
Mit declare -A erstellst du Key-Value-Speicher in Bash:
declare -A HOST_IPS=(
["web"]="192.168.1.10"
["db"]="192.168.1.20"
)
HOST_IPS["redis"]="192.168.1.30"
echo "Web-IP: ${HOST_IPS["web"]}"
echo "Alle Keys: ${!HOST_IPS[@]}"
echo "Alle Values: ${HOST_IPS[@]}"
CLI-Optionen mit getopts
Sauberes Verarbeiten von Flags wie -e prod -p 8080 -v:
while getopts "e:p:v" opt; do
case "$opt" in
e) ENV="$OPTARG" ;;
p) PORT="$OPTARG" ;;
v) VERBOSE=true ;;
esac
done
🎯 Aufgaben in aufgabe.sh
- TODO 1 (
summiere_zahlen_array): Summiere beliebig viele Zahlen mit einerfor-Schleife. - TODO 2 (
lese_csv_zeilenweise): Lies CSV-Daten mitwhile IFS=',' read -rein und gib eine gewünschte Spalte aus. - TODO 3 (
verwalte_server_hashmap): Verwalte ein assoziatives Array (declare -A) mitget,setundkeys. - TODO 4 (
zaehle_element_haeufigkeit): Zähle Vorkommen von Items mit einer assoziativen Counter-Map. - TODO 5 (
parse_cli_flags): Parse CLI-Parameter (-e,-p,-v) mitgetopts.
🧪 Tests ausführen
bash test_aufgabe.sh