80 lines
1.6 KiB
Bash
80 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# ==============================================================================
|
|
# 🐧 BASH 06: MUSTERLÖSUNG
|
|
# ==============================================================================
|
|
|
|
summiere_zahlen_array() {
|
|
local summe=0
|
|
for z in "$@"; do
|
|
summe=$(( summe + z ))
|
|
done
|
|
echo "$summe"
|
|
}
|
|
|
|
lese_csv_zeilenweise() {
|
|
local csv_text="$1"
|
|
local spalten_nr="$2"
|
|
local idx=$(( spalten_nr - 1 ))
|
|
|
|
while IFS=',' read -r -a felder; do
|
|
# Überspringe leere Zeilen
|
|
[[ ${#felder[@]} -eq 0 ]] && continue
|
|
echo "${felder[$idx]}"
|
|
done <<< "$csv_text"
|
|
}
|
|
|
|
verwalte_server_hashmap() {
|
|
local aktion="$1"
|
|
local key="$2"
|
|
local wert="$3"
|
|
|
|
declare -A server_map=(
|
|
["gateway"]="10.0.0.1"
|
|
["database"]="10.0.0.2"
|
|
["cache"]="10.0.0.3"
|
|
)
|
|
|
|
case "$aktion" in
|
|
get)
|
|
echo "${server_map[$key]}"
|
|
;;
|
|
set)
|
|
server_map["$key"]="$wert"
|
|
echo "$key=${server_map[$key]}"
|
|
;;
|
|
keys)
|
|
echo "${!server_map[@]}" | tr ' ' '\n' | sort | tr '\n' ' ' | sed 's/ $//'
|
|
echo
|
|
;;
|
|
esac
|
|
}
|
|
|
|
zaehle_element_haeufigkeit() {
|
|
declare -A counter
|
|
|
|
for item in "$@"; do
|
|
((counter["$item"]++))
|
|
done
|
|
|
|
for k in $(printf "%s\n" "${!counter[@]}" | sort); do
|
|
echo "$k: ${counter[$k]}"
|
|
done
|
|
}
|
|
|
|
parse_cli_flags() {
|
|
local env="production"
|
|
local port=8080
|
|
local verbose="false"
|
|
local OPTIND=1
|
|
|
|
while getopts ":e:p:v" opt; do
|
|
case "$opt" in
|
|
e) env="$OPTARG" ;;
|
|
p) port="$OPTARG" ;;
|
|
v) verbose="true" ;;
|
|
*) ;;
|
|
esac
|
|
done
|
|
|
|
echo "ENV=$env,PORT=$port,VERBOSE=$verbose"
|
|
}
|