#!/bin/bash display_help() { echo "Usage: ${0} [options]" echo "Options:" echo " -h, --help Show this help message" echo " -v, --verbose Enable verbose mode" echo " -f, --file Specify a file" echo " -n, --number Specify a number (default: 42)" } # Universelle Parameterparser-Funktion parse_args() { POSITIONAL=() while [[ $# -gt 0 ]]; do case "${1}" in -h|--help) display_help exit 0 ;; -v|--verbose) VERBOSE=true shift ;; -f|--file) if [[ -z "${2}" || "${2}" == -* ]]; then echo "Error: --file requires a non-empty argument." exit 1 fi FILE="$2" shift 2 ;; -n|--number) if [[ -z "${2}" || "${2}" == -* ]]; then echo "Error: --number requires a non-empty argument." exit 1 fi NUMBER="${2}" shift 2 ;; --) # Explicit end of options shift break ;; -*) # Unknown option echo "Error: Unknown option $1" exit 1 ;; *) # Positional argument POSITIONAL+=("$1") shift ;; esac done set -- "${POSITIONAL[@]}" # Restore positional parameters # Defaults VERBOSE="${VERBOSE:-false}" NUMBER="${NUMBER:-42}" }