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 | ||
| + | </ | ||