diff --git a/jobs/JGDAS_ATMOS_ANALYSIS_DIAG b/jobs/JGDAS_ATMOS_ANALYSIS_DIAG index 2733c30ce6b..70013e5e1af 100755 --- a/jobs/JGDAS_ATMOS_ANALYSIS_DIAG +++ b/jobs/JGDAS_ATMOS_ANALYSIS_DIAG @@ -32,12 +32,9 @@ mkdir -m 775 -p "${COMOUT_ATMOS_ANALYSIS}" ############################################################### # Run relevant script -${ANALDIAGSH:-${SCRgfs}/exglobal_diag.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ANALDIAGSH:-${SCRgfs}/exglobal_diag.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ATMOS_CHGRES_FORENKF b/jobs/JGDAS_ATMOS_CHGRES_FORENKF index d2f7012cf8e..61b99d12816 100755 --- a/jobs/JGDAS_ATMOS_CHGRES_FORENKF +++ b/jobs/JGDAS_ATMOS_CHGRES_FORENKF @@ -25,12 +25,9 @@ MEMDIR="mem001" YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ ############################################################### # Run relevant script -${CHGRESFCSTSH:-${SCRgfs}/exgdas_atmos_chgres_forenkf.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${CHGRESFCSTSH:-${SCRgfs}/exgdas_atmos_chgres_forenkf.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 0a9b92eaefe..87bb29e4b43 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -29,12 +29,9 @@ if [[ ! -d ${TANKverf_ozn} ]]; then mkdir -p ${TANKverf_ozn} ; fi #------------------------------------------------------- # Execute the script. # -"${SCRgfs}/exgdas_atmos_verfozn.sh" -err=$? -if (( err != 0 )); then - exit "${err}" -fi - +"${SCRgfs}/exgdas_atmos_verfozn.sh" && true +export err=$? +err_chk ################################ # Remove the Working Directory diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index ac18460a193..43faa5cae87 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -33,11 +33,9 @@ if [[ ! -d ${TANKverf_rad} ]]; then mkdir -p ${TANKverf_rad} ; fi ######################################################## # Execute the script. -"${SCRgfs}/exgdas_atmos_verfrad.sh" -err=$? -if (( err != 0 )); then - exit "${err}" -fi +"${SCRgfs}/exgdas_atmos_verfrad.sh" && true +export err=$? +err_chk ################################ # Remove the Working Directory diff --git a/jobs/JGDAS_ENKF_DIAG b/jobs/JGDAS_ENKF_DIAG index aa3eb1ddfea..1c2bf151fe7 100755 --- a/jobs/JGDAS_ENKF_DIAG +++ b/jobs/JGDAS_ENKF_DIAG @@ -44,8 +44,8 @@ MEMDIR="ensstat" RUN=${GDUMP_ENS} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ export ATMGES_ENSMEAN="${COMIN_ATMOS_HISTORY_PREV}/${GPREFIX}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then - echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" - exit 1 + export err=1 + err_chk "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" fi # Link observational data @@ -99,12 +99,9 @@ done ############################################################### # Run relevant script -${ANALDIAGSH:-${SCRgfs}/exglobal_diag.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ANALDIAGSH:-${SCRgfs}/exglobal_diag.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ENKF_ECEN b/jobs/JGDAS_ENKF_ECEN index b3f5c03203b..57c676ad813 100755 --- a/jobs/JGDAS_ENKF_ECEN +++ b/jobs/JGDAS_ENKF_ECEN @@ -40,12 +40,9 @@ MEMDIR="ensstat" RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ ############################################################### # Run relevant script -${ENKFRECENSH:-${SCRgfs}/exgdas_enkf_ecen.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ENKFRECENSH:-${SCRgfs}/exgdas_enkf_ecen.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ENKF_POST b/jobs/JGDAS_ENKF_POST index 244566ac5b3..0cf3dc0d1dc 100755 --- a/jobs/JGDAS_ENKF_POST +++ b/jobs/JGDAS_ENKF_POST @@ -21,12 +21,9 @@ export LEVS=$((LEVS-1)) ############################################################### # Run relevant script -${ENKFPOSTSH:-${SCRgfs}/exgdas_enkf_post.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ENKFPOSTSH:-${SCRgfs}/exgdas_enkf_post.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ENKF_SELECT_OBS b/jobs/JGDAS_ENKF_SELECT_OBS index aa82d53eae5..f354991bbf6 100755 --- a/jobs/JGDAS_ENKF_SELECT_OBS +++ b/jobs/JGDAS_ENKF_SELECT_OBS @@ -51,18 +51,14 @@ mkdir -p "${COMOUT_ATMOS_ANALYSIS}" export ATMGES_ENSMEAN="${COMIN_ATMOS_HISTORY_PREV}/${GPREFIX}atmf006${GSUFFIX}" if [[ ! -f ${ATMGES_ENSMEAN} ]]; then - echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" - exit 1 + export err=1 + err_chk "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" fi -# Ignore masking of chained commands and possible misspelling warning -# shellcheck disable=SC2153,SC2312 -LEVS=$(${NCDUMP} -h "${ATMGES_ENSMEAN}" | grep -i "pfull" | head -1 | awk -F" = " '{print $2}' | awk -F" " '{print $1}') # get LEVS -# shellcheck disable= -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi +LEVS=$(${NCLEN} ${ATMGES} pfull) && true +export err=$? +set_strict + export LEVS # Link observational data @@ -121,12 +117,9 @@ done ############################################################### # Run relevant script -${INVOBSSH:-${SCRgfs}/exgdas_enkf_select_obs.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${INVOBSSH:-${SCRgfs}/exgdas_enkf_select_obs.sh} && true +export err=$? +err_chk ############################################## # Send Alerts @@ -144,7 +137,7 @@ fi # Final processing ############################################## if [[ -e "${pgmout}" ]] ; then - cat ${pgmout} + cat "${pgmout}" fi ########################################## diff --git a/jobs/JGDAS_ENKF_SFC b/jobs/JGDAS_ENKF_SFC index f0ddc93429e..a81453b8f90 100755 --- a/jobs/JGDAS_ENKF_SFC +++ b/jobs/JGDAS_ENKF_SFC @@ -42,12 +42,9 @@ RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ ############################################################### # Run relevant script -${ENKFRESFCSH:-${SCRgfs}/exgdas_enkf_sfc.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ENKFRESFCSH:-${SCRgfs}/exgdas_enkf_sfc.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGDAS_ENKF_UPDATE b/jobs/JGDAS_ENKF_UPDATE index 24faf5469fb..56a0260e1a9 100755 --- a/jobs/JGDAS_ENKF_UPDATE +++ b/jobs/JGDAS_ENKF_UPDATE @@ -36,12 +36,9 @@ MEMDIR="ensstat" RUN="enkfgdas" YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ ############################################################### # Run relevant script -${ENKFUPDSH:-${SCRgfs}/exgdas_enkf_update.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ENKFUPDSH:-${SCRgfs}/exgdas_enkf_update.sh} && true +export err=$? +err_chk ############################################## # Send Alerts diff --git a/jobs/JGLOBAL_ARCHIVE_TARS b/jobs/JGLOBAL_ARCHIVE_TARS index 87127b94172..0d53480a5b6 100755 --- a/jobs/JGLOBAL_ARCHIVE_TARS +++ b/jobs/JGLOBAL_ARCHIVE_TARS @@ -75,7 +75,10 @@ fi set +eu ${GLOBALARCHIVESH:-${SCRgfs}/exglobal_archive_tars.py} -export err=$?; err_chk "FATAL ERROR: failed to archive the COM structure" +export err=$? +set +x +err_chk "FATAL ERROR: failed to archive the COM structure" +set_trace set_strict ############################################## diff --git a/jobs/JGLOBAL_ATMOS_ANALYSIS b/jobs/JGLOBAL_ATMOS_ANALYSIS index e015ae131f8..8d9212dd805 100755 --- a/jobs/JGLOBAL_ATMOS_ANALYSIS +++ b/jobs/JGLOBAL_ATMOS_ANALYSIS @@ -45,23 +45,20 @@ mkdir -p "${COMOUT_ATMOS_ANALYSIS}" export ATMGES="${COMIN_ATMOS_HISTORY_PREV}/${GPREFIX}atmf006.nc" if [ ! -f ${ATMGES} ]; then - echo "FATAL ERROR: FILE MISSING: ATMGES = ${ATMGES}" - exit 1 + export err=1 + err_chk "FATAL ERROR: FILE MISSING: ATMGES = ${ATMGES}" fi # Get LEVS -export LEVS=$(${NCLEN} ${ATMGES} pfull) -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +export LEVS=$(${NCLEN} ${ATMGES} pfull) && true +export err=$? +err_chk if [ ${DOHYBVAR} = "YES" ]; then export ATMGES_ENSMEAN="${COMIN_ATMOS_HISTORY_ENS_PREV}/${GPREFIX_ENS}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then - echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" - exit 2 + export err=2 + err_chk "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" fi fi @@ -89,12 +86,9 @@ fi ############################################################### # Run relevant script -${ANALYSISSH:-${SCRgfs}/exglobal_atmos_analysis.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ANALYSISSH:-${SCRgfs}/exglobal_atmos_analysis.sh} && true +export err=$? +err_chk ############################################## # Send Alerts diff --git a/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC b/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC index 255e29774a4..d72c4ecc92b 100755 --- a/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC +++ b/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC @@ -41,17 +41,14 @@ RUN=${GDUMP} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ export ATMGES="${COMIN_ATMOS_HISTORY_PREV}/${GPREFIX}atmf006.nc" if [ ! -f ${ATMGES} ]; then - echo "FATAL ERROR: FILE MISSING: ATMGES = ${ATMGES}" - exit 1 + export err=1 + err_chk "FATAL ERROR: FILE MISSING: ATMGES = ${ATMGES}" fi # Get LEVS -export LEVS=$(${NCLEN} ${ATMGES} pfull) -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +export LEVS=$(${NCLEN} ${ATMGES} pfull) && true +export err=$? +err_chk # Generate Gaussian surface analysis # TODO: Should this be removed now that sfcanl is its own job? export DOGAUSFCANL=${DOGAUSFCANL:-"YES"} @@ -60,12 +57,9 @@ export DOGAUSFCANL=${DOGAUSFCANL:-"YES"} ############################################################### # Run relevant script -${ANALCALCSH:-${SCRgfs}/exglobal_atmos_analysis_calc.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${ANALCALCSH:-${SCRgfs}/exglobal_atmos_analysis_calc.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGLOBAL_ATMOS_SFCANL b/jobs/JGLOBAL_ATMOS_SFCANL index 33a5150040c..233f4e2f99c 100755 --- a/jobs/JGLOBAL_ATMOS_SFCANL +++ b/jobs/JGLOBAL_ATMOS_SFCANL @@ -32,12 +32,9 @@ mkdir -p "${COMOUT_ATMOS_RESTART}" ############################################################### # Run relevant script -${SFCANALSH:-${SCRgfs}/exglobal_atmos_sfcanl.sh} -err=$? -if [[ ${err} -ne 0 ]]; then - exit "${err}" -fi - +${SFCANALSH:-${SCRgfs}/exglobal_atmos_sfcanl.sh} && true +export err=$? +err_chk ############################################## # End JOB SPECIFIC work diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 84e1014c196..da82aae2962 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -31,11 +31,9 @@ if [[ ! -d ${M_TANKverf} ]]; then mkdir -p "${M_TANKverf}" ; fi ######################################################## # Execute the script. -"${SCRgfs}/exglobal_atmos_vminmon.sh" -err=$? -if (( err != 0 )); then - exit "${err}" -fi +"${SCRgfs}/exglobal_atmos_vminmon.sh" && true +export err=$? +err_chk ################################ # Remove the Working Directory diff --git a/jobs/JGLOBAL_ENS_ARCHIVE_TARS b/jobs/JGLOBAL_ENS_ARCHIVE_TARS index dcb4d05210b..a57d405c5a1 100755 --- a/jobs/JGLOBAL_ENS_ARCHIVE_TARS +++ b/jobs/JGLOBAL_ENS_ARCHIVE_TARS @@ -21,7 +21,10 @@ if [[ ! -d ${COMOUT_CONF} ]]; then mkdir -p "${COMOUT_CONF}"; fi # Calls an external bash command; do not fail on unassigned/error set +eu "${SCRgfs}/exgdas_enkf_earc_tars.py" -export err=$?; err_chk "FATAL ERROR Failed to archive the ensemble COM structure" +export err=$? +set +x +err_chk "FATAL ERROR Failed to archive the ensemble COM structure" +set_trace set_strict ############################################################### diff --git a/scripts/exgdas_atmos_chgres_forenkf.sh b/scripts/exgdas_atmos_chgres_forenkf.sh index 4794c5568b8..6e4bc79713c 100755 --- a/scripts/exgdas_atmos_chgres_forenkf.sh +++ b/scripts/exgdas_atmos_chgres_forenkf.sh @@ -154,8 +154,9 @@ EOF export pgm=$CHGRESNCEXEC . prep_step - $APRUN_CHGRES $CHGRESNCEXEC chgres_nc_gauss0$FHR.nml - export err=$?; err_chk + ${APRUN_CHGRES} "${CHGRESNCEXEC}" "chgres_nc_gauss0${FHR}.nml" && true + export err=$? + err_chk fi done @@ -169,8 +170,9 @@ EOF export pgm=$CHGRESNCEXEC . prep_step - $APRUNCFP_CHGRES $DATA/mp_chgres.sh - export err=$?; err_chk + ${APRUNCFP_CHGRES} "${DATA}/mp_chgres.sh" && true + export err=$? + err_chk fi fi diff --git a/scripts/exgdas_atmos_verfozn.sh b/scripts/exgdas_atmos_verfozn.sh index 75d6ef973e0..0928569614d 100755 --- a/scripts/exgdas_atmos_verfozn.sh +++ b/scripts/exgdas_atmos_verfozn.sh @@ -7,7 +7,7 @@ # (OznMon) DA package. # ################################################################################ -err=0 +export err=0 data_available=0 @@ -36,13 +36,13 @@ if [[ -s ${oznstat} ]]; then export OZNMON_NETCDF=${netcdf} - "${USHgfs}/ozn_xtrct.sh" - err=$? + "${USHgfs}/ozn_xtrct.sh" && true + export err=$? else # oznstat file not found - err=1 + export err=1 fi -exit ${err} - +err_chk +exit 0 diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index 8b8bb592b87..d429d7444da 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -19,6 +19,9 @@ data_available=0 +# Do not exit on errors so that restricted data can be protected +set +eu + if [[ -s ${radstat} && -s ${biascr} ]]; then data_available=1 @@ -136,19 +139,13 @@ fi ##################################################################### # Postprocessing -err=0 +export err=0 if [[ ${data_available} -ne 1 ]]; then - err=1 -elif [[ ${rc_angle} -ne 0 ]]; then - err=${rc_angle} -elif [[ ${rc_bcoef} -ne 0 ]]; then - err=${rc_bcoef} -elif [[ ${rc_bcor} -ne 0 ]]; then - err=${rc_bcor} -elif [[ ${rc_time} -ne 0 ]]; then - err=${rc_time} + export err=1 fi +export err=$((err + rc_angle + rc_bcoef + rc_bcor + rc_time)) + ##################################################################### # Restrict select sensors and satellites export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} @@ -159,5 +156,6 @@ for rtype in ${rlist}; do fi done -exit ${err} +err_chk +exit "${err}" diff --git a/scripts/exgdas_enkf_ecen.sh b/scripts/exgdas_enkf_ecen.sh index d662bee61e1..ce8a76ada44 100755 --- a/scripts/exgdas_enkf_ecen.sh +++ b/scripts/exgdas_enkf_ecen.sh @@ -222,8 +222,13 @@ else LEVS_ENKF=${LEVS_ENKF:-$($NCLEN atminc_ensmean lev)} # get LEVS fi JCAP_ENKF=${JCAP_ENKF:--9999} # there is no jcap in these files -[ $JCAP_ENKF -eq -9999 -a $LATB_ENKF -ne -9999 ] && JCAP_ENKF=$((LATB_ENKF-2)) -[ $LONB_ENKF -eq -9999 -o $LATB_ENKF -eq -9999 -o $LEVS_ENKF -eq -9999 -o $JCAP_ENKF -eq -9999 ] && exit -9999 +if [[ ${JCAP_ENKF} -eq -9999 && ${LATB_ENKF} -ne -9999 ]]; then + JCAP_ENKF=$((LATB_ENKF-2)) +fi +if [[ ${LONB_ENKF} -eq -9999 || ${LATB_ENKF} -eq -9999 || ${LEVS_ENKF} -eq -9999 || ${JCAP_ENKF} -eq -9999 ]]; then + export err=9 + err_chk +fi ################################################################################ # This is to give the user the option to recenter, default is YES diff --git a/scripts/exgdas_enkf_post.sh b/scripts/exgdas_enkf_post.sh index 9391608cba5..b388ebd2254 100755 --- a/scripts/exgdas_enkf_post.sh +++ b/scripts/exgdas_enkf_post.sh @@ -109,20 +109,20 @@ rc=0 for fhr in $(seq $FHMIN $FHOUT $FHMAX); do fhrchar=$(printf %03i $fhr) - export pgm=$GETSFCENSMEANEXEC + export pgm=${GETSFCENSMEANEXEC} . prep_step - $APRUN_EPOS ${DATA}/$(basename $GETSFCENSMEANEXEC) ./ sfcf${fhrchar}.ensmean sfcf${fhrchar} $NMEM_ENS + ${APRUN_EPOS} "${DATA}/$(basename ${GETSFCENSMEANEXEC})" ./ "sfcf${fhrchar}.ensmean" "sfcf${fhrchar}" "${NMEM_ENS}" && true ra=$? rc=$((rc+ra)) - export_pgm=$GETATMENSMEANEXEC + export pgm=${GETATMENSMEANEXEC} . prep_step if [ $ENKF_SPREAD = "YES" ]; then - $APRUN_EPOS ${DATA}/$(basename $GETATMENSMEANEXEC) ./ atmf${fhrchar}.ensmean atmf${fhrchar} $NMEM_ENS atmf${fhrchar}.ensspread + ${APRUN_EPOS} "${DATA}/$(basename ${GETATMENSMEANEXEC})" ./ "atmf${fhrchar}.ensmean" "atmf${fhrchar}" "${NMEM_ENS}" "atmf${fhrchar}.ensspread" && true else - $APRUN_EPOS ${DATA}/$(basename $GETATMENSMEANEXEC) ./ atmf${fhrchar}.ensmean atmf${fhrchar} $NMEM_ENS + ${APRUN_EPOS} "${DATA}/$(basename ${GETATMENSMEANEXEC})" ./ "atmf${fhrchar}.ensmean" "atmf${fhrchar}" "${NMEM_ENS}" && true fi ra=$? rc=$((rc+ra)) @@ -163,4 +163,4 @@ fi # Postprocessing cd $pwd -exit $err +exit "${err}" diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index aeb3b24fb8b..9ced48bffc9 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -200,7 +200,7 @@ if [ $DOIAU = "YES" ]; then done # ensembles - CDATE="${PDY}${cyc}" ${CYCLESH} + CDATE="${PDY}${cyc}" "${CYCLESH}" && true export err=$?; err_chk # Copy outputs from DATA to COMOUT @@ -271,7 +271,7 @@ if [[ "${DOSFCANL_ENKF}" == "YES" ]]; then fi done - CDATE="${PDY}${cyc}" ${CYCLESH} + CDATE="${PDY}${cyc}" "${CYCLESH}" && true export err=$?; err_chk # Copy outputs from DATA to COMOUT diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index 8073692fa45..670bb92338c 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -259,7 +259,7 @@ if [[ $USE_CFP = "YES" ]]; then if [[ $ncmd -gt 0 ]]; then ncmd_max=$((ncmd < max_tasks_per_node ? ncmd : max_tasks_per_node)) APRUNCFP=$(eval echo $APRUNCFP) - $APRUNCFP $DATA/mp_untar.sh + ${APRUNCFP} "${DATA}/mp_untar.sh" && true export err=$?; err_chk fi fi @@ -405,8 +405,9 @@ export pgm=$ENKFEXEC . prep_step $NCP $ENKFEXEC $DATA -$APRUN_ENKF ${DATA}/$(basename $ENKFEXEC) 1>stdout 2>stderr -export err=$?; err_chk +$APRUN_ENKF "${DATA}/$(basename $ENKFEXEC)" 1>stdout 2>stderr && true +export err=$? +err_chk # Cat runtime output files. cat stdout stderr > "${COMOUT_ATMOS_ANALYSIS_STAT}/${ENKFSTAT}" @@ -419,4 +420,4 @@ if [[ "${mkdata}" == "YES" ]]; then fi -exit ${err} +exit "${err}" diff --git a/ush/jjob_header.sh b/ush/jjob_header.sh index 3c5f85adc80..5efdc8fba1c 100755 --- a/ush/jjob_header.sh +++ b/ush/jjob_header.sh @@ -105,7 +105,9 @@ export EXPDIR="${EXPDIR:-${HOMEgfs}/parm/config}" for config in "${configs[@]:-''}"; do source "${EXPDIR}/config.${config}" && true export err=$? + set +x err_chk "FATAL ERROR [${BASH_SOURCE[0]}]: Unable to load config config.${config}" + set_trace done @@ -114,4 +116,6 @@ done ########################################## source "${HOMEgfs}/env/${machine}.env" "${env_job}" && true export err=$? +set +x err_chk "FATAL ERROR: [${BASH_SOURCE[0]}]: Error while sourcing machine environment ${machine}.env for job ${env_job}" +set_trace