You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.2 KiB
98 lines
2.2 KiB
#!/bin/bash
|
|
# Author: Nils Gerstner
|
|
# Last revision: 15 nov 2022 18:00
|
|
# Version: v0.1
|
|
# Description:
|
|
|
|
#=== VARIABLES ================================================================#
|
|
|
|
declare -r SCRIPT_NAME=$(basename "$BASH_SOURCE" .sh)
|
|
declare -r HELP_MSG="Usage: $SCRIPT_NAME [OPTION]... [ARG]...
|
|
-h display this help and exit
|
|
"
|
|
|
|
#=== FUNCTIONS ================================================================#
|
|
|
|
## Print colored messages
|
|
_cmsg() {
|
|
case "$1" in
|
|
black) COLOR="\033[0;30m" ;;
|
|
white) COLOR="\033[1;37m" ;;
|
|
grey) COLOR="\033[1;30m" ;;
|
|
lgrey) COLOR="\033[0;37m" ;;
|
|
red) COLOR="\033[0;31m" ;;
|
|
lred) COLOR="\033[1;31m" ;;
|
|
green) COLOR="\033[0;32m" ;;
|
|
lgreen) COLOR="\033[1;32m" ;;
|
|
brown) COLOR="\033[0;33m" ;;
|
|
yelow) COLOR="\033[1;33m" ;;
|
|
blue) COLOR="\033[0;34m" ;;
|
|
lblue) COLOR="\033[1;34m" ;;
|
|
purple) COLOR="\033[0;35m" ;;
|
|
lpurple) COLOR="\033[1;35m" ;;
|
|
cyan) COLOR="\033[0;36m" ;;
|
|
lcyan) COLOR="\033[1;36m" ;;
|
|
nocolor) COLOR="\033[0m" ;;
|
|
esac
|
|
printf "${COLOR}${2}\33[0m\n"
|
|
}
|
|
|
|
## exit the shell(default status code: 1) after printing the message to stderr
|
|
_bail() {
|
|
echo -ne "$1" >&2
|
|
exit ${2-1}
|
|
}
|
|
|
|
## print the usage and exit the shell(default status code: 2)
|
|
_usage() {
|
|
local status=2
|
|
if [[ "$1" =~ ^[0-9]+$ ]]; then
|
|
status=$1
|
|
shift
|
|
fi
|
|
_bail "${1}$HELP_MSG" $status
|
|
}
|
|
|
|
_failure() {
|
|
local lineno=$1
|
|
local msg=$2
|
|
echo "Failed at $lineno: $msg"
|
|
}
|
|
|
|
#=== SET ENVIRONMENT AND EXIT CONDITIONS ======================================#
|
|
|
|
# -e Exit immediately on error
|
|
# -E ERR trap is inherited by shell functions
|
|
set -eE -o functrace
|
|
|
|
trap '_failure ${LINENO} "$BASH_COMMAND"' ERR
|
|
|
|
#=== HANDLE ARGUMENTS =========================================================#
|
|
|
|
while getopts ":hie:" opt; do
|
|
case $opt in
|
|
i)
|
|
# Do something
|
|
#(for ex. execute a function or set a switch variable)
|
|
;;
|
|
e)
|
|
# Option with argument
|
|
e_argument=${OPTARG}
|
|
;;
|
|
h)
|
|
_usage 0
|
|
;;
|
|
\?)
|
|
_usage "Invalid option: -$OPTARG \n"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $OPTIND
|
|
[[ "$#" -lt 1 ]] && usage "Too few arguments\n"
|
|
|
|
#=== MAIN CODE BELOW ==========================================================#
|
|
|
|
echo "Start!"
|
|
|