linux_wiki:template_bash_script

This is an old revision of the document!


Template: Bash Script

General Information

Templates for creating two types of bash scripts:

  1. A single script with arguments
  2. A bash script that provides logging and launches a child script.

Checklist

  • Distro(s): Any

Parent Script

This is the script to execute that will provide logging and launch the child script.

script_skel.sh
###############################################################################################
#!/bin/bash
# Name: script_skel.sh
# Description: Template wrapper script for script_worker_skel.sh that provides logging.
###############################################################################################
 
##### Customize These Variables #####
# Log file
log_file="${HOME}/script.log"
 
# Name of worker script to execute
worker="script_worker_skel.sh"
#### End Customize Variables ####
 
# Store this script's name and figure out the base path
script_name="$(basename ${0})"
base_path=$(echo ${0} | sed "s/${script_name}//")
 
# Clear log and timestamp the beginning
echo -e ">>Logging output and errors to: ${log_file}\n"
cat /dev/null > ${log_file}
echo -e "---- Log Started: $(date) ----\n" >> ${log_file}
 
## Execute Script ##
/usr/bin/time ${base_path}${worker} 2>&1 | tee -a ${log_file}
 
# Close log file
echo -e "\n---- Log Completed: $(date) ----" >> ${log_file}
 
# Reminder of log file location
echo -e "\n>>Logged output and errors was sent to: ${log_file}"

Child Script

This script does all the work and is launched via its parent script.

script_worker_skel.sh
###############################################################################################
#!/bin/bash
# Name: script_worker_skel.sh
# Description: Template for a worker script. Launched via parent script: script_skel.sh
###############################################################################################
 
##### Customize These Variables #####
#variable1="value"
##### End of Customize Variables #####
 
#### Functions Here: Main Starts After ####
# function name{
#
#}
#### End of Functions ####
 
#==================
# Main Starts Here
#==================
 
# Pre-checks
 
#==============================================================
# Confirm running the script
#==============================================================
echo -e "======================================================"
echo -e "####=============== Name of Script ===============####"
echo -e "======================================================"
echo
echo -e "Warning: This script will..."
echo -e "\n=>Continue?[y/n]:\c"
read run_script
 
if [[ ${run_script} != "y" ]]; then
  echo -e "\n>>Will not run the Name of Script. Exiting..."
  exit 1
fi 
 
# Do some stuff
 
echo -e "\n======================================================"
echo -e "####========== Name of Script Complete ===========####"
echo -e "======================================================"

  • linux_wiki/template_bash_script.1466735590.txt.gz
  • Last modified: 2019/05/25 23:50
  • (external edit)