X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/blobdiff_plain/d3bd7fe1b1d9acdb89655d532e9243ee4addcdd3..282cc59d9c67c0882fd3ab9e8e2476b341a862dd:/unitproc/bktemp-processArgs?ds=inline diff --git a/unitproc/bktemp-processArgs b/unitproc/bktemp-processArgs index ca29c35..27679a2 100644 --- a/unitproc/bktemp-processArgs +++ b/unitproc/bktemp-processArgs @@ -4,6 +4,7 @@ #==BEGIN Define script parameters== #===BEGIN Define variables=== : +declare -ag arrayPosArgs #===END Define variables=== #===BEGIN Declare local script functions=== @@ -17,7 +18,7 @@ vbm() { # Input: arg1: string # vars: opVerbose # Output: stderr - # Depends: bash 5.0.3, GNU-coreutils 8.30 (echo, date) + # Depends: bash 5.1.16, GNU-coreutils 8.30 (echo, date) if [ "$opVerbose" = "true" ]; then functionTime="$(date --iso-8601=ns)"; # Save current time in nano seconds. @@ -30,7 +31,7 @@ vbm() { showUsage() { # Desc: Display script usage information # Usage: showUsage - # Version 0.0.1 + # Version 0.0.2 # Input: none # Output: stdout # Depends: GNU-coreutils 8.30 (cat) @@ -50,18 +51,21 @@ showUsage() { -I, --input-dir Define input directory path. -o, --output-file - Define output file path + Define output file path. -O, --output-dir - Define output directory path + Define output directory path. + -- + Indicate end of options. EXAMPLE: bktemp-processArgs -o foo.txt + bktemp-processArgs -o foo.txt -- some_file.txt EOF } # Display information on how to use this script. showVersion() { # Desc: Displays script version and license information. # Usage: showVersion - # Version: 0.0.1 + # Version: 0.0.2 # Input: scriptVersion var containing version string # Output: stdout # Depends: vbm(), yell, GNU-coreutils 8.30 @@ -70,14 +74,14 @@ showVersion() { vbm "DEBUG:showVersion function called." cat <<'EOF' -bktemp-processArgs 0.0.1 +bktemp-processArgs 1.0.0 Copyright (C) 2021 Steven Baltakatei Sandoval License GPLv3: GNU GPL version 3 This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. - GNU Coreutils 8.30 - Copyright (C) 2018 Free Software Foundation, Inc. + GNU Coreutils 8.32 + Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. @@ -90,7 +94,7 @@ EOF processArgs() { # Desc: Processes arguments provided to script. # Usage: processArgs "$@" - # Version: 0.0.1 + # Version: 1.0.0 # Input: "$@" (list of arguments provided to the function) # Output: Sets following variables used by other functions: # opVerbose Indicates verbose mode enable status. (ex: "true", "false") @@ -98,15 +102,18 @@ processArgs() { # pathFileOut1 Path to output file. # pathDirIn1 Path to input directory. # pathFileIn1 Path to input file. - # opFileOut1_overwrite Indicates whether file pathFileOut1 should be overwritten (ex: "true", "false') + # opFileOut1_overwrite Indicates whether file pathFileOut1 should be overwritten (ex: "true", "false"). + # arrayPosArgs Array of remaining positional argments # Depends: # yell() Displays messages to stderr. # vbm() Displays messsages to stderr if opVerbose set to "true". - # showUsage() Displays usage information about parent script - # showVersion() Displays version about parent script - # External dependencies: bash (5.0.3), echo + # showUsage() Displays usage information about parent script. + # showVersion() Displays version about parent script. + # arrayPosArgs Global array for storing non-option positional arguments (i.e. arguments following the `--` option). + # External dependencies: bash (5.1.16), echo # Ref./Attrib.: # [1]: Marco Aurelio (2014-05-08). "echo that outputs to stderr". https://stackoverflow.com/a/23550347 + # [2]: "Handling positional parameters" (2018-05-12). https://wiki.bash-hackers.org/scripting/posparams # Initialize function vbm "DEBUG:processArgs function called." @@ -169,8 +176,16 @@ processArgs() { yell "ERROR:Specified output directory is not valid:""$2"; yell "Exiting."; exit 1; - fi ;; - *) yell "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options. See [1]. + fi ;; + --) # End of all options. See [2]. + shift; + for arg in "$@"; do + vbm "DEBUG:adding to arrayPosArgs:$arg"; + arrayPosArgs+=("$arg"); + done; + break;; + -*) showUsage; yell "ERROR: Unrecognized option."; exit 1;; # Display usage + *) showUsage; yell "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options. See [1]. esac shift done @@ -186,12 +201,14 @@ processArgs() { #==BEGIN sample code== processArgs "$@"; yell "DEBUG:Provided arguments..:""$*" -yell "DEBUG:opVerbose...........:$opVerbose"; -yell "DEBUG:pathDirOut1.........:$pathDirOut1"; -yell "DEBUG:pathFileOut1........:$pathFileOut1"; -yell "DEBUG:pathDirIn1..........:$pathDirIn1"; -yell "DEBUG:pathFileIn1.........:$pathFileIn1"; -yell "DEBUG:opFileOut1_overwrite:$opFileOut1_overwrite"; +yell "DEBUG:opVerbose...........:${opVerbose:-}"; +yell "DEBUG:pathDirOut1.........:${pathDirOut1:-}"; +yell "DEBUG:pathFileOut1........:${pathFileOut1:-}"; +yell "DEBUG:pathDirIn1..........:${pathDirIn1:-}"; +yell "DEBUG:pathFileIn1.........:${pathFileIn1:-}"; +yell "DEBUG:opFileOut1_overwrite:${opFileOut1_overwrite:-}"; +yell "DEBUG:arrayPosArgs........:$(if [[ -v arrayPosArgs ]]; then declare -p arrayPosArgs; else printf ""; fi )"; +#yell "DEBUG:arrayPosArgs........:${arrayPosArgs[*]}"; #==END sample code== # Author: Steven Baltaktei Sandoval