#!/bin/bash set -euo pipefail IFS=$'\n\t' log() { echo "[INFO] $*" } error_exit() { echo "[ERROR] $*" >&2 exit 1 } sanitize_value() { echo "$1" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' } load_config() { local config_file="$1" if [[ ! -f "$config_file" ]]; then error_exit "Konfigurationsdatei nicht gefunden: $config_file" fi log "Lade und bereinige Konfigurationsdatei: $config_file" while IFS='=' read -r key value; do # nur gültige Variablennamen parsen if [[ "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then # Kommentar nach Wert entfernen value="${value%%#*}" value="$(sanitize_value "$value")" # Variable setzen (für den write_new_config Zugriff) eval "$key=\"$value\"" fi done < "$config_file" } write_new_config() { local out_file="$1" cat > "$out_file" <" exit 1 fi ORIGINAL="$1" read -rp "Soll die aktuelle Datei als Backup gesichert werden (umbenennen)? (ja/nein): " RESPONSE RESPONSE="${RESPONSE,,}" if [[ "$RESPONSE" == "ja" || "$RESPONSE" == "j" ]]; then BACKUPFILE="${ORIGINAL}.bak" mv "$ORIGINAL" "$BACKUPFILE" log "Originaldatei wurde umbenannt in: $BACKUPFILE" CONFIG_TO_READ="$BACKUPFILE" else log "Keine Sicherung der Originaldatei durchgeführt. Original bleibt unverändert." CONFIG_TO_READ="$ORIGINAL" fi NEWFILE="${ORIGINAL}.convert" load_config "$CONFIG_TO_READ" write_new_config "$NEWFILE" log "Neue Konfiguration geschrieben in: $NEWFILE"