Modelo de script básico para cada script bash

Todos os créditos desta postagem

#!/usr/bin/env bash
set -euo pipefail
IFS
=$'nt'

#/ Usage:
#/ Description:
#/ Examples:
#/ Options:
#/ --help: Display this help message
usage
() { grep '^#/' "$0" | cut -c4- ; exit 0 ; }
expr
"$*" : ".*--help" > /dev/null && usage

readonly LOG_FILE
="/tmp/$(basename "$0").log"
info
() { echo "[INFO] $@" | tee -a "$LOG_FILE" >&2 ; }
warning
() { echo "[WARNING] $@" | tee -a "$LOG_FILE" >&2 ; }
error
() { echo "[ERROR] $@" | tee -a "$LOG_FILE" >&2 ; }
fatal
() { echo "[FATAL] $@" | tee -a "$LOG_FILE" >&2 ; exit 1 ; }

cleanup
() {
# Remove temporary files
# Restart services
# ...
}

# Parse Parameters #
while [ "$#" -gt 1 ];
do
key
="$1"

case $key in
-d|--discovery)
discovery_period
="$2" # EXAMPLE
shift

;;
--default)
default
=YES
;;
*)
;;
esac
shift

done

if [[ "${BASH_SOURCE[0]}" = "$0" ]]; then
trap cleanup EXIT

# Script goes here
# ...
fi