1 changed files with 66 additions and 0 deletions
@ -0,0 +1,66 @@ |
|||||
|
#!/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 <file> Specify a file" |
||||
|
echo " -n, --number <num> 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:-<not set>}" |
||||
|
echo "Number: $NUMBER" |
||||
|
echo "Positional arguments: $@" |
||||
|
|
Loading…
Reference in new issue