#!/bin/bash cat <<-EOF #!/bin/bash #========================================= # Author : Colben # Create : $(date +"%F %R") #========================================= set -euo pipefail export LANG=en_US.UTF-8 trap Quit EXIT if [ -t 0 ]; then function Print { echo -e "\033[32;1m\$(date +'[%F %T]') \$*\033[0m"; } function Warn { echo -e "\033[33;1m\$(date +'[%F %T]') \$*\033[0m"; } function Error { echo -e "\033[31;1m\$(date +'[%F %T]') \$*\033[0m"; exit 1; } else function Print { echo -e "\$(date +'[%F %T] INFO') \$*"; } function Warn { echo -e "\$(date +'[%F %T] WARN') \$*"; } function Error { echo -e "\$(date +'[%F %T] ERRRO') \$*"; exit 1; } fi function Quit { local exitCode=\$? [ 0 -ne \$exitCode ] && Error Failed to xxxx! [ -z "\${END:-}" ] && echo && Error Interrupted manually! Print Succeeded to xxxx. } function Func1 { Print Func1 ... } function Func2 { Print Func2 ... } function Main { Print Main ... Func1 Func2 END=1 } # Start here Main EOF