```shell=bash #!/bin/sh ##Setting global/main variables### BIN_DIR=/apps/mktsys_app/scripts/sem/adobe_sem_hourly/bin LOG_DIR=/apps/mktsys_app/scripts/sem/adobe_sem_hourly/log adobe_sem_hourly_load=$BIN_DIR/adobe_sem_hourly_load.sh hist_load_adobe_sem_hourly_by_loop=$BIN_DIR/hist_load_adobe_sem_hourly_by_loop.sh todays_date=$(date +'%Y_%m_%d_%H%M') ##Checking command line arguments to make sure exactly 2 arguments are supplied## if [ "$#" -ne 2 ]; then echo "Supplied invalid number of parameters. Expected 2. Found $#: $@" fi LOAD_TYPE=$1 LOAD_CONFIG=$2 ##Setting log file name as hourly and historical load have distinct log file names if [ $LOAD_TYPE == "adobe_sem_hourly_load" ]; then LOG_FILE=$LOG_DIR/manual_${LOAD_TYPE}_${todays_date}.log else LOG_FILE=$LOG_DIR/${LOAD_TYPE}_${todays_date}.log fi ##Logger function to log script output function Log { LEVEL=$1 MSG=$2 DT=`date +"%Y-%m-%d %H:%M:%S"` echo "$DT $LEVEL ${FUNCNAME[0]} ${BASH_LINENO[0]} $MSG" >> $LOG_FILE } ##Running reload script function Run_Reload { LOAD_TYPE=$1 BEGIN_DATE=$2 END_DATE=$3 PERIOD=$4 Log INFO "Passing following variables to function: $LOAD_TYPE $BEGIN_DATE_FRMTTD $END_DATE_FRMTTD $PERIOD" case $LOAD_TYPE in adobe_sem_hourly_load) Log INFO "Running adobe_sem_hourly_load..." if [[ -z "$PERIOD" ]]; then Log ERROR "PERIOD is empty. Value is required for this load type" return 1 fi Log INFO "nohup sh $adobe_sem_hourly_load $BEGIN_DATE $END_DATE $PERIOD >> \"${manual_adobe_sem_hourly_load}\" 2>&1 &" nohup sh $adobe_sem_hourly_load $BEGIN_DATE $END_DATE $PERIOD >> "${LOG_FILE}" 2>&1 & ;; hist_load_adobe_sem_hourly_by_loop) Log INFO "Running hist_load_adobe_sem_hourly_by_loop..." Log INFO "nohup sh $hist_load_adobe_sem_hourly_by_loop $BEGIN_DATE $END_DATE $PERIOD >> \"${hist_load_adobe_sem_hourly_by_loop}\" 2>&1 &" nohup sh $hist_load_adobe_sem_hourly_by_loop $BEGIN_DATE $END_DATE $PERIOD >> "${LOG_FILE}" 2>&1 & ;; *) Log ERROR "Unknown load type: $LOAD_TYPE" return 1 ;; esac } ##Main (entry point) Log INFO "Starting..." Log INFO "Log file is $LOG_FILE" Log INFO "Checking for any running process" #Checking to see if this LOAD_TYPE script is running is_schdld_jobrunning=(`pgrep -f $LOAD_TYPE.sh`) if [[ ! -z $is_schdld_jobrunning ]]; then is_schdld_job=$( ps $is_schdld_jobrunning ) Log INFO "Scheduled hourly job is currently running" Log INFO "Current Running Job: $is_schdld_job" Log INFO "Exiting..." return 1 fi Log INFO "No hourly job currently running" #Reading and Loading for line in $( cat ${LOAD_CONFIG} ) do Log INFO "Reading ${LOAD_CONFIG} configuration file" BEGIN_DATE=$( echo $line | cut -d ',' -f 1 ) PERIOD=$( echo $line | cut -d ',' -f 2 ) ##formatted date BEGIN_DATE_FRMTTD=$( date -d $BEGIN_DATE +%F ) END_DATE_FRMTTD=$( date -d "$BEGIN_DATE_FRMTTD next day" +%F ) Run_Reload $LOAD_TYPE $BEGIN_DATE_FRMTTD $END_DATE_FRMTTD $PERIOD done Log INFO "Done..." ``` # https://linuxize.com/post/bash-case-statement/ File descriptor 1 is the standard output (stdout). File descriptor 2 is the standard error (stderr).