Differences
This shows you the differences between two versions of the page.
— | tech:linux:bash_script_skeleton [2022/12/26 12:29] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Bash Script Skeleton ====== | ||
+ | ===== Getting Script Directory ===== | ||
+ | <code bash> | ||
+ | SCRIPT_DIR=$( cd -- "$( dirname -- " | ||
+ | </ | ||
+ | |||
+ | ===== Processing Arguments and Help ===== | ||
+ | <code bash> | ||
+ | function help { | ||
+ | echo " | ||
+ | echo "Pass both type and name or neither." | ||
+ | echo " | ||
+ | echo | ||
+ | echo " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | if [ " | ||
+ | help | ||
+ | exit 1 | ||
+ | else | ||
+ | domain=$1 | ||
+ | acme=$2 | ||
+ | fi | ||
+ | if [ " | ||
+ | help | ||
+ | fi | ||
+ | if [ " | ||
+ | rtype=$3 | ||
+ | name=$4 | ||
+ | else | ||
+ | rtype=" | ||
+ | name=" | ||
+ | fi | ||
+ | </ | ||
+ | Related | ||
+ | <code bash> | ||
+ | echo "Total Number of Arguments:" | ||
+ | echo " | ||
+ | </ | ||
+ | ===== Setting Color ===== | ||
+ | Ref: https:// | ||
+ | |||
+ | < | ||
+ | RED=' | ||
+ | GREEN=' | ||
+ | YELLOW=' | ||
+ | CYAN=' | ||
+ | NC=' | ||
+ | printf " | ||
+ | </ | ||
+ | |||
+ | ===== OLD - Check for number of arguments ===== | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # .......... comment ............ | ||
+ | # | ||
+ | NOW=$(date +" | ||
+ | # | ||
+ | # | ||
+ | if [[ ! (" | ||
+ | echo "One argument required." | ||
+ | exit 1 | ||
+ | fi | ||
+ | # | ||
+ | exit 0 | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | ===== Check if argument is empty ===== | ||
+ | <code bash> | ||
+ | if [ -z " | ||
+ | echo ' | ||
+ | exit 1 | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ===== if conditions ===== | ||
+ | ==== Single String Comparision ==== | ||
+ | <code bash> | ||
+ | if [ $thesimple == ' | ||
+ | echo " | ||
+ | sudo rm -Rf ${TARGET_MAIN}/ | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ==== OR condition ==== | ||
+ | <code bash> | ||
+ | if [[ $thesimple == ' | ||
+ | echo "At least one of them is N" | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ===== Sleep a random amount of time between 0 and 10 minutes ===== | ||
+ | <code bash> | ||
+ | sleep $((RANDOM%600)) | ||
+ | </ | ||
+ | |||
+ | ===== Check if file does not exist ===== | ||
+ | <code bash> | ||
+ | if [ ! -f " | ||
+ | echo "File: $HOSTFILE does not exist" | ||
+ | exit 1 | ||
+ | fi | ||
+ | </ | ||
+ | ===== Check if directory exist ===== | ||
+ | <code bash> | ||
+ | if [ -d " | ||
+ | echo " | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ===== Another Skeleton ===== | ||
+ | Inspired by Nagios script | ||
+ | <code bash> | ||
+ | PROGNAME=`/ | ||
+ | PROGPATH=`echo $0 | sed -e ' | ||
+ | REVISION=" | ||
+ | # | ||
+ | STATE_OK=0 | ||
+ | STATE_ERROR=1 | ||
+ | # | ||
+ | check_root() { | ||
+ | # make sure script is running as non-root | ||
+ | if [ `whoami` == root ]; then | ||
+ | echo " | ||
+ | exit $STATE_ERROR | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | print_usage() { | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo "" | ||
+ | echo " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | print_help() { | ||
+ | print_revision $PROGNAME $REVISION | ||
+ | echo "" | ||
+ | print_usage | ||
+ | echo "" | ||
+ | echo " | ||
+ | echo "" | ||
+ | } | ||
+ | |||
+ | print_revision() { | ||
+ | echo "$1 v$2 Application Deployment" | ||
+ | } | ||
+ | |||
+ | # Check user is root | ||
+ | check_root | ||
+ | # | ||
+ | thesimple=N | ||
+ | theapache=N | ||
+ | thegitit=N | ||
+ | echo "Total Number of Arguments:" | ||
+ | echo " | ||
+ | |||
+ | while test -n " | ||
+ | case " | ||
+ | --help) | ||
+ | print_help | ||
+ | exit $STATE_OK | ||
+ | ;; | ||
+ | -h) | ||
+ | print_help | ||
+ | exit $STATE_OK | ||
+ | ;; | ||
+ | --version) | ||
+ | print_revision $PROGNAME $REVISION | ||
+ | exit $STATE_OK | ||
+ | ;; | ||
+ | -V) | ||
+ | print_revision $PROGNAME $REVISION | ||
+ | exit $STATE_OK | ||
+ | ;; | ||
+ | --simple) | ||
+ | thesimple=Y | ||
+ | ;; | ||
+ | -s) | ||
+ | thesimple=Y | ||
+ | ;; | ||
+ | --apache) | ||
+ | theapache=Y | ||
+ | ;; | ||
+ | -a) | ||
+ | theapache=Y | ||
+ | ;; | ||
+ | --gitit) | ||
+ | thegitit=Y | ||
+ | ;; | ||
+ | -g) | ||
+ | thegitit=Y | ||
+ | ;; | ||
+ | --critical) | ||
+ | thecrit=$2 | ||
+ | ;; | ||
+ | -c) | ||
+ | thecrit=$2 | ||
+ | ;; | ||
+ | --fstype) | ||
+ | thefsty=$2 | ||
+ | ;; | ||
+ | -t) | ||
+ | thefsty=$2 | ||
+ | ;; | ||
+ | *) | ||
+ | echo " | ||
+ | print_usage | ||
+ | exit $STATE_ERROR | ||
+ | ;; | ||
+ | esac | ||
+ | shift | ||
+ | done | ||
+ | </ | ||