From 01372ed6dd06a9dfa3a2e9f4d98d3af26cc490da Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Thu, 12 Feb 2026 05:42:42 +0100 Subject: [PATCH] Teil 27. --- teil27/getopt_demo.sh | 55 +++++++++++++++++++++++++++++++++++++++++ teil27/param_parsing.sh | 38 ++++++++++++++++++++++++++++ teil27/test_param.sh | 21 ++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100755 teil27/getopt_demo.sh create mode 100755 teil27/param_parsing.sh create mode 100755 teil27/test_param.sh diff --git a/teil27/getopt_demo.sh b/teil27/getopt_demo.sh new file mode 100755 index 0000000..c74cbda --- /dev/null +++ b/teil27/getopt_demo.sh @@ -0,0 +1,55 @@ +#! /usr/bin/bash + +help=0 +verbose=0 +level="" + + +# parsing the valid arguments +VALID_ARGS=$(getopt -o hvl: --long help,verbose,level: -- "$@") +if [[ $? -ne 0 ]]; then + exit 1; +fi + +eval set -- "$VALID_ARGS" +print_params() { + count=0 + for var in "$@" + do + echo "Param ${count}: ${var}" + count=$((${count} + 1)) + done +} + + +print_params "$@" +echo "VALID_ARGS=${VALID_ARGS}" +eval set -- "$VALID_ARGS" +print_params "$@" + +while [ : ]; do + case "${1}" in + -h | --help) + help=1 + shift + ;; + -v | --verbose) + verbose=1 + shift + ;; + -l | --level) + level="${2}" + shift 2 + ;; + --) shift; + break + ;; + *) echo "unbekannter Parameter ${1}" + exit 1 + esac +done + +echo "help=${help}" +echo "verbose=${verbose}" +echo "level=${level}" + diff --git a/teil27/param_parsing.sh b/teil27/param_parsing.sh new file mode 100755 index 0000000..b5f2bed --- /dev/null +++ b/teil27/param_parsing.sh @@ -0,0 +1,38 @@ +#! /usr/bin/bash + +help=0 +verbose=0 +level="" +args=() + +while [[ $# -gt 0 ]]; do + case "${1}" in + -h|--help) + help=1 + shift + ;; + -v|--verbose) + verbose=1 + shift + ;; + -l|--level) + level="${2}" + shift 2 + ;; + *) + args+=("${1}") + shift + ;; + esac +done + +echo "help=${help}" +echo "verbose=${verbose}" +echo "level=${level}" + +count=0 +for var in "${args[@]}"; do + echo "Arg ${count}: ${var}" + ((count++)) +done + diff --git a/teil27/test_param.sh b/teil27/test_param.sh new file mode 100755 index 0000000..6c301b0 --- /dev/null +++ b/teil27/test_param.sh @@ -0,0 +1,21 @@ +#! /usr/bin/bash + +print_params() { + count=0 + for var in "$@" + do + echo "Param ${count}: ${var}" + count=$((${count} + 1)) + done +} + +VALID_ARGS=$(getopt -o hvl: --long help,verbose,level: -- "$@") +if [[ $? -ne 0 ]]; then + exit 1; +fi +echo "Originalargumente:" +print_params "$@" +eval set -- "$VALID_ARGS" +printf "\nnach eval set:\n" +print_params "$@" +