--- /dev/null
+#!/bin/bash
+
+# Date: 2020-02-15T22:23Z
+
+# Author: Steven Baltakatei Sandoval
+
+# Description: `bkgettext` prints text between and including two
+# specified tags.
+
+# Usage:
+# $ bkgettext [ -s tagStart ] [ -e tagEnd ] [ -f file ]
+
+echoerr() { echo "$@" 1>&2; } # function for outputing to stderr; see [3]
+vc() { [ "$OPTION_VERBOSE" == "true" ] && return 0 || return 1; } # returns true if verbose mode active
+print_help() { echoerr "Usage: [ -s tagStart ] [ -e tagEnd ] [ -f file ] "; } # print help
+process_inputs() {
+ # echoerr "process_inputs() \$1:""===""$1""==="
+ # echoerr "process_inputs() \$2:""===""$2""==="
+ # echoerr "process_inputs() \$3:""===""$3""==="
+ # echoerr "process_inputs() \$4:""===""$4""==="
+ # echoerr "process_inputs() \$5:""===""$5""==="
+ # echoerr "process_inputs() \$6:""===""$6""==="
+ # echoerr "process_inputs() \$7:""===""$7""==="
+ # echoerr "process_inputs() \$8:""===""$8""==="
+
+ while getopts "vhs:e:f:" options_array; do
+ case "${options_array}" in
+ v)
+ OPTION_VERBOSE="true"
+ vc && echoerr "DEBUG:Verbose mode active."
+ ;;
+ h)
+ print_help; exit 1
+ ;;
+ s)
+ tagStart=${OPTARG}
+ vc && echoerr "DEBUG:tagStart:""$tagStart"
+ ;;
+ e)
+ tagEnd=${OPTARG}
+ vc && echoerr "DEBUG:tagEnd:""$tagEnd"
+ ;;
+ f)
+ [ ! -f ${OPTARG} ] && echoerr "ERROR: Invalid file name provided." && exit 1;
+ fileInput=${OPTARG}
+ vc && echoerr "DEBUG:fileInput:""$fileInput"
+ ;;
+ *)
+ echoerr "Error."
+ ;;
+ esac
+ done
+ shift $((OPTIND-1))
+}
+
+main() {
+
+ process_inputs "$@" # Define variables: tagStart tagEnd fileInput
+ # echoerr "main() \$1:""===""$1""==="
+ # echoerr "main() \$2:""===""$2""==="
+ # echoerr "main() \$3:""===""$3""==="
+ # echoerr "main() \$4:""===""$4""==="
+ # echoerr "main() \$5:""===""$5""==="
+ # echoerr "main() \$6:""===""$6""==="
+ # echoerr "main() \$7:""===""$7""==="
+ # echoerr "main() \$8:""===""$8""==="
+ # echoerr "main() \$tagStart:""===""$tagStart""==="
+ # echoerr "main() \$tagEnd:""===""$tagEnd""==="
+ # echoerr "main() \$fileInput:""===""$fileInput""==="
+ #OUTPUT=$(cat "$fileInput" | awk "/$tagStart/,/$tagEnd/") # get text between and including tag lines; see [1]
+ #OUTPUT=$(cat "$fileInput" | awk "/$tagStart/{f=1;next} /$tagEnd/{f=0} f") # get text between tag lines; see [1]
+ OUTPUT=$(cat "$fileInput" | awk "/$tagStart/{f=1} /$tagEnd/{f=0;print} f") # get text between and including tag lines; see [1]
+ echo "$OUTPUT"
+}
+
+main "$@" # pass arguments to function "main" and execute "main" (for why `"$@"`, see [2])
+exit 0 # exit normally
+
+
+
+#===References===
+# [1]: How to get text between and including specified strings: https://stackoverflow.com/a/22222219
+# [2]: How to correctly pass bash script arguments to functions: https://stackoverflow.com/a/8198970
+# [3]: How to print text to stderr instead of stdout: https://stackoverflow.com/a/2990533