#!/bin/bash # Universelle Parameterparser-Funktion parse_args() { POSITIONAL=() while [[ $# -gt 0 ]]; do case "$1" in -h|--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)" 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}" } # Aufruf der Funktion mit allen Skriptargumenten parse_args "$@" # Beispielnutzung echo "Verbose mode: $VERBOSE" echo "File: ${FILE:-}" echo "Number: $NUMBER" echo "Positional arguments: $@"