From ef25518f314cfad0df53002682d7af570a491502 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 19:05:23 +0000 Subject: [PATCH 01/30] Rename and delete VMINMON scripts - Rename JGDAS_ATMOS_VMINMON -> JGLOBAL_ATMOS_VMINMON and exgdas_atmos_vminmon.sh -> exglobal_atmos_vminmon.sh - Delete JGFS_ATMOS_VMINMON and exgfs_atmos_vminmon.sh - Will consolidate around GLOBAL versions Refs #1925 --- jobs/JGFS_ATMOS_VMINMON | 71 ----------- ...AS_ATMOS_VMINMON => JGLOBAL_ATMOS_VMINMON} | 0 scripts/exgfs_atmos_vminmon.sh | 115 ------------------ ...s_vminmon.sh => exglobal_atmos_vminmon.sh} | 0 4 files changed, 186 deletions(-) delete mode 100755 jobs/JGFS_ATMOS_VMINMON rename jobs/{JGDAS_ATMOS_VMINMON => JGLOBAL_ATMOS_VMINMON} (100%) delete mode 100755 scripts/exgfs_atmos_vminmon.sh rename scripts/{exgdas_atmos_vminmon.sh => exglobal_atmos_vminmon.sh} (100%) diff --git a/jobs/JGFS_ATMOS_VMINMON b/jobs/JGFS_ATMOS_VMINMON deleted file mode 100755 index c548d806f5..0000000000 --- a/jobs/JGFS_ATMOS_VMINMON +++ /dev/null @@ -1,71 +0,0 @@ -#! /usr/bin/env bash - -########################################################### -# GFS Minimization Monitor (MinMon) job -########################################################### -source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" - -########################################################### -# obtain unique process id (pid) and make temp directories -########################################################### -export MINMON_SUFFIX=${MINMON_SUFFIX:-GFS} -export m_job=${m_job:-${MINMON_SUFFIX}_mmDE} - - -############################################## -# Specify Package Areas -############################################## -export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} -export M_FIXgfs=${M_FIXgfs:-${HOMEgfs}/fix/product} - -export HOMEminmon=${HOMEminmon:-${HOMEgfs}} -export EXECminmon=${EXECminmon:-${HOMEminmon}/exec} -export USHminmon=${USHminmon:-${HOMEminmon}/ush} - - -############################################# -# determine PDY and cyc for previous cycle -############################################# - -pdate=$(${NDATE} -6 ${PDY}${cyc}) -echo 'pdate = ${pdate}' - -export P_PDY=${pdate:0:8} -export p_cyc=${pdate:8:2} - - -############################################# -# TANKverf - WHERE OUTPUT DATA WILL RESIDE -############################################# -YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS -YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_MINMON -YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL - -export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} -export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} - -if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi -if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi - - -######################################## -# Set necessary environment variables -######################################## -export CYCLE_INTERVAL=6 -export gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/gfs.t${cyc}z.gsistat} - - -######################################################## -# Execute the script. -${GMONSH:-${SCRgfs}/exgfs_atmos_vminmon.sh} ${PDY} ${cyc} -err=$? -[[ ${err} -ne 0 ]] && exit ${err} - - -################################ -# Remove the Working Directory -################################ -[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" - -exit 0 diff --git a/jobs/JGDAS_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON similarity index 100% rename from jobs/JGDAS_ATMOS_VMINMON rename to jobs/JGLOBAL_ATMOS_VMINMON diff --git a/scripts/exgfs_atmos_vminmon.sh b/scripts/exgfs_atmos_vminmon.sh deleted file mode 100755 index d0ab4e3674..0000000000 --- a/scripts/exgfs_atmos_vminmon.sh +++ /dev/null @@ -1,115 +0,0 @@ -#! /usr/bin/env bash - -source "$HOMEgfs/ush/preamble.sh" - -################################################################################ -#### UNIX Script Documentation Block -# . . -# Script name: exgfs_vrfminmon.sh -# Script description: Runs data extract/validation for GSI normalization diag data -# -# Author: Ed Safford Org: NP23 Date: 2015-04-10 -# -# Abstract: This script runs the data extract/validation portion of the -# MinMon package. -# -# Condition codes -# 0 - no problem encountered -# >0 - some problem encountered -# -################################################################################ - - -######################################## -# Set environment -######################################## -export NET=${NET:-gfs} -export RUN=${RUN:-gfs} -export envir=${envir:-prod} - -######################################## -# Command line arguments -######################################## -export PDY=${1:-${PDY:?}} -export cyc=${2:-${cyc:?}} - -######################################## -# Directories -######################################## -export DATA=${DATA:-$(pwd)} - - -######################################## -# Filenames -######################################## -gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/gfs.t${cyc}z.gsistat} -export mm_gnormfile=${gnormfile:-${M_FIXgfs}/gfs_minmon_gnorm.txt} -export mm_costfile=${costfile:-${M_FIXgfs}/gfs_minmon_cost.txt} - -######################################## -# Other variables -######################################## -export MINMON_SUFFIX=${MINMON_SUFFIX:-GFS} -export PDATE=${PDY}${cyc} -export NCP=${NCP:-/bin/cp} -export pgm=exgfs_vrfminmon.sh - - - -if [[ ! -d ${DATA} ]]; then - mkdir $DATA -fi -cd $DATA - -###################################################################### - -data_available=0 - -if [[ -s ${gsistat} ]]; then - - data_available=1 - - #------------------------------------------------------------------ - # Copy the $MINMON_SUFFIX.gnorm_data.txt file to the working directory - # It's ok if it doesn't exist; we'll create a new one if needed. - #------------------------------------------------------------------ - if [[ -s ${M_TANKverf}/gnorm_data.txt ]]; then - $NCP ${M_TANKverf}/gnorm_data.txt gnorm_data.txt - elif [[ -s ${M_TANKverfM1}/gnorm_data.txt ]]; then - $NCP ${M_TANKverfM1}/gnorm_data.txt gnorm_data.txt - fi - - - #------------------------------------------------------------------ - # Run the child sccripts. - #------------------------------------------------------------------ - ${USHminmon}/minmon_xtrct_costs.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy - rc_costs=$? - echo "rc_costs = $rc_costs" - - ${USHminmon}/minmon_xtrct_gnorms.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy - rc_gnorms=$? - echo "rc_gnorms = $rc_gnorms" - - ${USHminmon}/minmon_xtrct_reduct.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy - rc_reduct=$? - echo "rc_reduct = $rc_reduct" - -fi - -##################################################################### -# Postprocessing - -err=0 -if [[ ${data_available} -ne 1 ]]; then - err=1 -elif [[ $rc_costs -ne 0 ]]; then - err=$rc_costs -elif [[ $rc_gnorms -ne 0 ]]; then - err=$rc_gnorms -elif [[ $rc_reduct -ne 0 ]]; then - err=$rc_reduct -fi - -exit ${err} - diff --git a/scripts/exgdas_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh similarity index 100% rename from scripts/exgdas_atmos_vminmon.sh rename to scripts/exglobal_atmos_vminmon.sh From 0aabdcf68e24f403a82ec52e8b5c883ede12d0cb Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 19:07:09 +0000 Subject: [PATCH 02/30] Monitor fix file updates - Delete gfs_minmon_*.txt fix files from fix/product. - Update link script to link to gfs_minmon_*.txt files from GSI-Monitor package checkout under /sorc. - Rename generated fix folder "gdas" to "mon" and place gfs fix file symlinks alongside gdas ones in folder. - Update .gitignore for new fix/mon folder. Refs #1925 --- .gitignore | 2 +- fix/product/gfs_minmon_cost.txt | 4 ---- fix/product/gfs_minmon_gnorm.txt | 6 ------ sorc/link_workflow.sh | 6 ++++-- 4 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 fix/product/gfs_minmon_cost.txt delete mode 100644 fix/product/gfs_minmon_gnorm.txt diff --git a/.gitignore b/.gitignore index 9ac9ece1dd..8f331340d7 100644 --- a/.gitignore +++ b/.gitignore @@ -30,11 +30,11 @@ fix/chem fix/cice fix/cpl fix/datm -fix/gdas fix/gldas fix/gsi fix/lut fix/mom6 +fix/mon fix/orog fix/reg2grb2 fix/sfc_climo diff --git a/fix/product/gfs_minmon_cost.txt b/fix/product/gfs_minmon_cost.txt deleted file mode 100644 index 7b4341587b..0000000000 --- a/fix/product/gfs_minmon_cost.txt +++ /dev/null @@ -1,4 +0,0 @@ -cost_target:cost,grad,step,b,step?: -cost_number:4: -costterms_target:costterms Jb,Jo,Jc,Jl: - diff --git a/fix/product/gfs_minmon_gnorm.txt b/fix/product/gfs_minmon_gnorm.txt deleted file mode 100644 index 4687139cf3..0000000000 --- a/fix/product/gfs_minmon_gnorm.txt +++ /dev/null @@ -1,6 +0,0 @@ -igrad_target:cost,grad,step,b,step?: -igrad_number:5: -gnorm_target:penalty and grad reduction WRT outer and initial iter: -gnorm_number:14: -expected_gnorms:202: -gross_check_val:3.5E-4: diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 6c7e9a73f1..61c12b8346 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -215,10 +215,12 @@ fi if [[ -d "${HOMEgfs}/sorc/gsi_monitor.fd" ]]; then cd "${HOMEgfs}/fix" || exit 1 - [[ ! -d gdas ]] && ( mkdir -p gdas || exit 1 ) - cd gdas || exit 1 + [[ ! -d mon ]] && ( mkdir -p mon || exit 1 ) + cd mon || exit 1 ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gdas/fix/gdas_minmon_cost.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gdas/fix/gdas_minmon_gnorm.txt" . + ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gfs/fix/gfs_minmon_cost.txt" . + ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gfs/fix/gfs_minmon_gnorm.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Ozone_Monitor/nwprod/gdas_oznmon/fix/gdas_oznmon_base.tar" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Ozone_Monitor/nwprod/gdas_oznmon/fix/gdas_oznmon_satype.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Radiance_Monitor/nwprod/gdas_radmon/fix/gdas_radmon_base.tar" . From 0fe307274b4199653b9269e09bda47fcab5f850d Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 19:09:53 +0000 Subject: [PATCH 03/30] Consolidate new GLOBAL VMINMON scripts - Update the new GLOBAL/global versions of the vminmon scripts to consolidate gdas and gfs functionality. - Clean up scripts some. - Update rocoto job vminmon.sh script to use consolidated JJOB script now. Refs #1925 --- jobs/JGLOBAL_ATMOS_VMINMON | 37 ++++++++++----------------- jobs/rocoto/vminmon.sh | 2 +- scripts/exglobal_atmos_vminmon.sh | 42 ++++++------------------------- 3 files changed, 22 insertions(+), 59 deletions(-) diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index c7c6d12f9a..b564dcebed 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -1,42 +1,25 @@ #! /usr/bin/env bash ########################################################### -# GDAS Minimization Monitor (MinMon) job +# Global Minimization Monitor (MinMon) job ########################################################### source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" -########################################################### -# obtain unique process id (pid) and make temp directories -########################################################### -export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} -export m_job=${m_job:-${MINMON_SUFFIX}_mmDE} - - ############################################## # Specify Package Areas ############################################## -export HOMEgfs=${HOMEgfs:-${NWROOT}/gfs.${gfs_ver}} +export M_FIX=${M_FIX:-${HOMEgfs}/fix/mon} export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} - -export M_FIXgdas=${M_FIXgdas:-${HOMEgfs}/fix/gdas} - -export HOMEminmon=${HOMEminmon:-${HOMEgfs}} -export EXECminmon=${EXECminmon:-${HOMEminmon}/exec} -export USHminmon=${USHminmon:-${HOMEminmon}/ush} - +export USHminmon=${USHminmon:-${HOMEgfs}/ush} ############################################# -# determine PDY and cyc for previous cycle +# Determine PDY and cyc for previous cycle ############################################# - pdate=$(${NDATE} -6 ${PDY}${cyc}) -echo "pdate = ${pdate}" - export P_PDY=${pdate:0:8} export p_cyc=${pdate:8:2} - ############################################# # TANKverf - WHERE OUTPUT DATA WILL RESIDE ############################################# @@ -50,17 +33,23 @@ export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi - ######################################## # Set necessary environment variables ######################################## +export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} export CYCLE_INTERVAL=6 -export gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.gsistat} + +######################################## +# Filenames +######################################## +gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat} +export mm_gnormfile=${gnormfile:-${M_FIX}/${RUN}_minmon_gnorm.txt} +export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} ######################################################## # Execute the script. -${GMONSH:-${SCRgfs}/exgdas_atmos_vminmon.sh} ${PDY} ${cyc} +${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh} ${PDY} ${cyc} err=$? [[ ${err} -ne 0 ]] && exit ${err} diff --git a/jobs/rocoto/vminmon.sh b/jobs/rocoto/vminmon.sh index 2bbb7599ca..73f10167e5 100755 --- a/jobs/rocoto/vminmon.sh +++ b/jobs/rocoto/vminmon.sh @@ -16,7 +16,7 @@ export jobid="${job}.$$" echo echo "=============== START TO RUN MINMON ===============" -"${HOMEgfs}/jobs/J${RUN^^}_ATMOS_VMINMON" +"${HOMEgfs}/jobs/JGLOBAL_ATMOS_VMINMON" status=$? exit "${status}" diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index 94790c67c5..dc32bbf954 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -1,11 +1,11 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block # . . -# Script name: exgdas_vrfminmon.sh +# Script name: exglobal_atmos_vminmon.sh # Script description: Runs data extract/validation for GSI normalization diag data # # Author: Ed Safford Org: NP23 Date: 2015-04-10 @@ -19,39 +19,13 @@ source "$HOMEgfs/ush/preamble.sh" # ################################################################################ - -######################################## -# Set environment -######################################## -export NET=${NET:-gfs} -export RUN=${RUN:-gdas} -export envir=${envir:-prod} - -######################################## -# Directories -######################################## -export DATA=${DATA:-$(pwd)} - - -######################################## -# Filenames ######################################## -gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.gsistat} -export mm_gnormfile=${gnormfile:-${M_FIXgdas}/gdas_minmon_gnorm.txt} -export mm_costfile=${costfile:-${M_FIXgdas}/gdas_minmon_cost.txt} - -######################################## -# Other variables +# Command line arguments ######################################## -export MINMON_SUFFIX=${MINMON_SUFFIX:-GDAS} -export PDATE=${PDY}${cyc} -export NCP=${NCP:-/bin/cp} -export pgm=exgdas_vrfminmon.sh +export PDY=${1:-${PDY:?}} +export cyc=${2:-${cyc:?}} -if [[ ! -d ${DATA} ]]; then - mkdir $DATA -fi -cd $DATA +cd "${DATA}" || exit 1 ###################################################################### @@ -71,9 +45,9 @@ if [[ -s ${gsistat} ]]; then # data into ${cyc} subdirectories (elif condition). #----------------------------------------------------------------------- if [[ -s ${M_TANKverf}/gnorm_data.txt ]]; then - $NCP ${M_TANKverf}/gnorm_data.txt gnorm_data.txt + ${NCP} ${M_TANKverf}/gnorm_data.txt gnorm_data.txt elif [[ -s ${M_TANKverfM1}/gnorm_data.txt ]]; then - $NCP ${M_TANKverfM1}/gnorm_data.txt gnorm_data.txt + ${NCP} ${M_TANKverfM1}/gnorm_data.txt gnorm_data.txt fi From be25d08749f079f4bbfb20ee7a909285716bab7f Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 20:06:56 +0000 Subject: [PATCH 04/30] Export gsistat for ex-script Add an "export" for the gsistat variable in JGLOBAL_ATMOS_VMINMON so the ex-script gets it from the environment. Refs #1925 --- jobs/JGLOBAL_ATMOS_VMINMON | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index b564dcebed..11e27b377b 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -42,7 +42,7 @@ export CYCLE_INTERVAL=6 ######################################## # Filenames ######################################## -gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat} +export gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat} export mm_gnormfile=${gnormfile:-${M_FIX}/${RUN}_minmon_gnorm.txt} export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} From 6f24765d4d382b45808a465bb50de7a1a3927dad Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 20:08:28 +0000 Subject: [PATCH 05/30] Update fix subfolder to "mon" Also update the fix subfolder name in the JJOB scripts for the oznmon and radmon jobs. Refs #1925 --- jobs/JGDAS_ATMOS_VERFOZN | 2 +- jobs/JGDAS_ATMOS_VERFRAD | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 3b75359e6a..ab15eb913f 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -15,7 +15,7 @@ export HOMEgfs_ozn=${HOMEgfs:-${NWROOT}/gfs.${gfs_ver}} export HOMEgdas_ozn=${HOMEgfs_ozn:-${NWROOT}/gfs.${gfs_ver}} export PARMgdas_ozn=${PARMgfs_ozn:-${HOMEgfs_ozn}/parm/mon} export SCRgdas_ozn=${SCRgfs_ozn:-${HOMEgfs_ozn}/scripts} -export FIXgdas_ozn=${FIXgfs_ozn:-${HOMEgfs_ozn}/fix/gdas} +export FIXgdas_ozn=${FIXgfs_ozn:-${HOMEgfs_ozn}/fix/mon} export HOMEoznmon=${HOMEoznmon:-${HOMEgfs_ozn}} export EXECoznmon=${EXECoznmon:-${HOMEoznmon}/exec} diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 301af7d06e..11e7487ba2 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -17,7 +17,7 @@ export CYCLE_INTERVAL=${CYCLE_INTERVAL:-6} export HOMEgfs=${HOMEgfs:-${NWROOT}/gfs.${gfs_ver}} export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} -export FIXgdas=${FIXgdas:-${HOMEgfs}/fix/gdas} +export FIXgdas=${FIXgdas:-${HOMEgfs}/fix/mon} export PARMmon=${PARMmon:-${HOMEgfs}/parm/mon} export HOMEradmon=${HOMEradmon:-${HOMEgfs}} From 7b42fedab5f65fdbd8672164ed8ab17858e5e986 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 21:27:50 +0000 Subject: [PATCH 06/30] Clean up the GSI monitor scripts some more Refs #1925 --- jobs/JGDAS_ATMOS_VERFOZN | 33 +++++++++++-------------- jobs/JGDAS_ATMOS_VERFRAD | 37 ++++++++++------------------ jobs/JGLOBAL_ATMOS_VMINMON | 1 - scripts/exgdas_atmos_verfozn.sh | 36 +-------------------------- scripts/exgdas_atmos_verfrad.sh | 41 ++----------------------------- scripts/exglobal_atmos_vminmon.sh | 2 -- 6 files changed, 31 insertions(+), 119 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index ab15eb913f..4146b0fdee 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -22,20 +22,10 @@ export EXECoznmon=${EXECoznmon:-${HOMEoznmon}/exec} export FIXoznmon=${FIXoznmon:-${HOMEoznmon}/fix} export USHoznmon=${USHoznmon:-${HOMEoznmon}/ush} - -#----------------------------------- -# source the parm file -# -. ${PARMgdas_ozn}/gdas_oznmon.parm - - ############################################# # determine PDY and cyc for previous cycle ############################################# - pdate=$(${NDATE} -6 ${PDY}${cyc}) -echo "pdate = ${pdate}" - export P_PDY=${pdate:0:8} export p_cyc=${pdate:8:2} @@ -49,20 +39,27 @@ export TANKverf_ozn=${TANKverf_ozn:-${COM_ATMOS_OZNMON}} if [[ ! -d ${TANKverf_ozn} ]]; then mkdir -p -m 775 ${TANKverf_ozn} ; fi +#----------------------------------- +# Other variables +# +export OZN_AREA=${OZN_AREA:-glb} +export oznstat=${oznstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.oznstat} +export SATYPE_FILE=${SATYPE_FILE:-${FIXgdas_ozn}/gdas_oznmon_satype.txt} +export PDATE=${PDY}${cyc} +export DO_DATA_RPT=${DO_DATA_RPT:-1} + +#----------------------------------- +# source the parm file +# +. ${PARMgdas_ozn}/gdas_oznmon.parm + #--------------------------------------- -# set up validation file +# Set up validation file # if [[ ${VALIDATE_DATA} -eq 1 ]]; then export ozn_val_file=${ozn_val_file:-${FIXgdas_ozn}/gdas_oznmon_base.tar} fi -#--------------------------------------- -# Set necessary environment variables -# -export OZN_AREA=${OZN_AREA:-glb} -export oznstat=${oznstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.oznstat} - - #------------------------------------------------------- # Execute the script. # diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 11e7487ba2..0f41125c7b 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -6,10 +6,9 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" -export COMPONENT="atmos" - export RADMON_SUFFIX=${RADMON_SUFFIX:-${RUN}} export CYCLE_INTERVAL=${CYCLE_INTERVAL:-6} +export VERBOSE=${VERBOSE:-YES} ############################################## # Specify Execution Areas @@ -25,21 +24,16 @@ export EXECradmon=${EXECradmon:-${HOMEradmon}/exec} export FIXradmon=${FIXradmon:-${FIXgfs}} export USHradmon=${USHradmon:-${HOMEradmon}/ush} - ################################### # source the parm file ################################### parm_file=${parm_file:-${PARMmon}/da_mon.parm} . ${parm_file} - ############################################# # determine PDY and cyc for previous cycle ############################################# - pdate=$(${NDATE} -6 ${PDY}${cyc}) -echo "pdate = ${pdate}" - export P_PDY=${pdate:0:8} export p_cyc=${pdate:8:2} @@ -57,31 +51,26 @@ export TANKverf_radM1=${TANKverf_radM1:-${COM_ATMOS_RADMON_PREV}} if [[ ! -d ${TANKverf_rad} ]]; then mkdir -p -m 775 ${TANKverf_rad} ; fi if [[ ! -d ${TANKverf_radM1} ]]; then mkdir -p -m 775 ${TANKverf_radM1} ; fi -######################################## -# Set necessary environment variables -######################################## -export RAD_AREA=${RAD_AREA:-glb} - +############################################# +# Filenames export biascr=${biascr:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.abias} export radstat=${radstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.radstat} +export satype_file=${satype_file:-${FIXgdas}/gdas_radmon_satype.txt} -echo " " -echo "JOB HAS STARTED" -echo " " - +# Other variables +export RAD_AREA=${RAD_AREA:-glb} +export MAKE_CTL=${MAKE_CTL:-1} +export MAKE_DATA=${MAKE_DATA:-1} +export USE_ANL=${USE_ANL:-1} +export PDATE=${PDY}${cyc} +export DO_DIAG_RPT=${DO_DIAG_RPT:-1} +export DO_DATA_RPT=${DO_DATA_RPT:-1} ######################################################## # Execute the script. ${RADMONSH:-${SCRgfs}/exgdas_atmos_verfrad.sh} ${PDY} ${cyc} err=$? - -if [[ ${err} -ne 0 ]] ; then - exit ${err} -else - echo " " - echo "JOB HAS COMPLETED NORMALLY" - echo " " -fi +[[ ${err} -ne 0 ]] && exit ${err} ################################ # Remove the Working Directory diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 11e27b377b..61723f430c 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -46,7 +46,6 @@ export gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat} export mm_gnormfile=${gnormfile:-${M_FIX}/${RUN}_minmon_gnorm.txt} export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} - ######################################################## # Execute the script. ${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh} ${PDY} ${cyc} diff --git a/scripts/exgdas_atmos_verfozn.sh b/scripts/exgdas_atmos_verfozn.sh index ae4954891a..3c4e4f2c80 100755 --- a/scripts/exgdas_atmos_verfozn.sh +++ b/scripts/exgdas_atmos_verfozn.sh @@ -3,7 +3,7 @@ source "$HOMEgfs/ush/preamble.sh" ################################################################################ -# exgdas_vrfyozn.sh +# exgdas_atmos_verfozn.sh # # This script runs the data extract/validation portion of the Ozone Monitor # (OznMon) DA package. @@ -11,40 +11,6 @@ source "$HOMEgfs/ush/preamble.sh" ################################################################################ err=0 -#------------------------------------------------------------------------------- -# Set environment -# -export NET=${NET:-gfs} -export RUN=${RUN:-gdas} -export envir=${envir:-prod} - -# Other variables -export SATYPE_FILE=${SATYPE_FILE:-$FIXgdas_ozn/gdas_oznmon_satype.txt} -export PDATE=${PDY}${cyc} -export DO_DATA_RPT=${DO_DATA_RPT:-1} -export NCP=${NCP:-/bin/cp} - - -#----------------------------------------------------------------- -# ensure work and TANK dirs exist, verify oznstat is available -# -export OZN_WORK_DIR=${OZN_WORK_DIR:-$(pwd)} - -if [[ ! -d ${OZN_WORK_DIR} ]]; then - mkdir $OZN_WORK_DIR -fi -cd $OZN_WORK_DIR - -if [[ ! -d ${TANKverf_ozn} ]]; then - mkdir -p $TANKverf_ozn -fi - -if [[ -s ${oznstat} ]]; then - echo ${oznstat} is available -fi - - - data_available=0 if [[ -s ${oznstat} ]]; then diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index f6f244b708..dae46c91e2 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -5,7 +5,7 @@ source "$HOMEgfs/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block # . . -# Script name: exgdas_vrfyrad.sh +# Script name: exgdas_atmos_verfrad.sh # Script description: Runs data extract/validation for global radiance diag data # # Author: Ed Safford Org: NP23 Date: 2012-01-18 @@ -19,45 +19,8 @@ source "$HOMEgfs/ush/preamble.sh" # ################################################################################ -export VERBOSE=${VERBOSE:-YES} - -export NET=${NET:-gfs} -export RUN=${RUN:-gdas} -export envir=${envir:-prod} - -# Filenames -biascr=${biascr:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.abias} -radstat=${radstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.radstat} -satype_file=${satype_file:-${FIXgdas}/gdas_radmon_satype.txt} - -# Other variables -export RAD_AREA=${RAD_AREA:-glb} -export MAKE_CTL=${MAKE_CTL:-1} -export MAKE_DATA=${MAKE_DATA:-1} -export USE_ANL=${USE_ANL:-1} -export PDATE=${PDY}${cyc} -export DO_DIAG_RPT=${DO_DIAG_RPT:-1} -export DO_DATA_RPT=${DO_DATA_RPT:-1} -export NCP=${NCP:-/bin/cp} - -########################################################################### -# ensure TANK dir exists, verify radstat and biascr are available -# -if [[ ! -d ${TANKverf_rad} ]]; then - mkdir -p $TANKverf_rad -fi - -if [[ "$VERBOSE" = "YES" ]]; then - if [[ -s ${radstat} ]]; then - echo ${radstat} is available - fi - if [[ -s ${biascr} ]]; then - echo ${biascr} is available - fi -fi -##################################################################### - data_available=0 + if [[ -s ${radstat} && -s ${biascr} ]]; then data_available=1 diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index dc32bbf954..6ab195c1a2 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -25,8 +25,6 @@ source "${HOMEgfs}/ush/preamble.sh" export PDY=${1:-${PDY:?}} export cyc=${2:-${cyc:?}} -cd "${DATA}" || exit 1 - ###################################################################### data_available=0 From 80e05902554321f0c964c4edb0eaf160b3b19626 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 21:48:11 +0000 Subject: [PATCH 07/30] Resolve SC2086 shellcheck warnings for VMINMON Refs #1925 --- jobs/JGLOBAL_ATMOS_VMINMON | 2 +- scripts/exglobal_atmos_vminmon.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 61723f430c..954cc3f04a 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -48,7 +48,7 @@ export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} ######################################################## # Execute the script. -${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh} ${PDY} ${cyc} +"${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh}" "${PDY}" "${cyc}" err=$? [[ ${err} -ne 0 ]] && exit ${err} diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index 6ab195c1a2..e119cf8bd5 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -43,9 +43,9 @@ if [[ -s ${gsistat} ]]; then # data into ${cyc} subdirectories (elif condition). #----------------------------------------------------------------------- if [[ -s ${M_TANKverf}/gnorm_data.txt ]]; then - ${NCP} ${M_TANKverf}/gnorm_data.txt gnorm_data.txt + ${NCP} "${M_TANKverf}/gnorm_data.txt" gnorm_data.txt elif [[ -s ${M_TANKverfM1}/gnorm_data.txt ]]; then - ${NCP} ${M_TANKverfM1}/gnorm_data.txt gnorm_data.txt + ${NCP} "${M_TANKverfM1}/gnorm_data.txt" gnorm_data.txt fi From 2e76dbc8e41c216dc10ddf25747a302429d24eaa Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 21:56:05 +0000 Subject: [PATCH 08/30] Remove PDY and cyc arguments for VMINMON scripts Refs #1925 --- jobs/JGLOBAL_ATMOS_VMINMON | 2 +- scripts/exglobal_atmos_vminmon.sh | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 954cc3f04a..8c80132d36 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -48,7 +48,7 @@ export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} ######################################################## # Execute the script. -"${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh}" "${PDY}" "${cyc}" +"${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh}" err=$? [[ ${err} -ne 0 ]] && exit ${err} diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index e119cf8bd5..1783fe22b8 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -19,14 +19,6 @@ source "${HOMEgfs}/ush/preamble.sh" # ################################################################################ -######################################## -# Command line arguments -######################################## -export PDY=${1:-${PDY:?}} -export cyc=${2:-${cyc:?}} - -###################################################################### - data_available=0 if [[ -s ${gsistat} ]]; then From b6cd9657b87db596bc4ddd0e83d3f604761bdbd9 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 27 Nov 2023 22:13:44 +0000 Subject: [PATCH 09/30] Address reviewer comments with changes Refs #1925 --- jobs/JGDAS_ATMOS_VERFOZN | 6 +++--- jobs/JGDAS_ATMOS_VERFRAD | 16 ++++++++-------- jobs/JGLOBAL_ATMOS_VMINMON | 12 ++++++------ scripts/exglobal_atmos_vminmon.sh | 6 +++--- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 4146b0fdee..cf9b808f77 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -25,9 +25,9 @@ export USHoznmon=${USHoznmon:-${HOMEoznmon}/ush} ############################################# # determine PDY and cyc for previous cycle ############################################# -pdate=$(${NDATE} -6 ${PDY}${cyc}) -export P_PDY=${pdate:0:8} -export p_cyc=${pdate:8:2} +GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +export gPDY=${GDATE:0:8} +export gcyc=${GDATE:8:2} #--------------------------------------------- # OZN_TANKDIR - WHERE OUTPUT DATA WILL RESIDE diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 0f41125c7b..6eea7187e9 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -6,10 +6,6 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" -export RADMON_SUFFIX=${RADMON_SUFFIX:-${RUN}} -export CYCLE_INTERVAL=${CYCLE_INTERVAL:-6} -export VERBOSE=${VERBOSE:-YES} - ############################################## # Specify Execution Areas ############################################## @@ -33,9 +29,9 @@ parm_file=${parm_file:-${PARMmon}/da_mon.parm} ############################################# # determine PDY and cyc for previous cycle ############################################# -pdate=$(${NDATE} -6 ${PDY}${cyc}) -export P_PDY=${pdate:0:8} -export p_cyc=${pdate:8:2} +GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +export gPDY=${GDATE:0:8} +export gcyc=${GDATE:8:2} ############################################# # COMOUT - WHERE GSI OUTPUT RESIDES @@ -43,7 +39,7 @@ export p_cyc=${pdate:8:2} ############################################# YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON -YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL +YMD=${gPDY} HH=${gcyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL export TANKverf_rad=${TANKverf_rad:-${COM_ATMOS_RADMON}} export TANKverf_radM1=${TANKverf_radM1:-${COM_ATMOS_RADMON_PREV}} @@ -66,6 +62,10 @@ export PDATE=${PDY}${cyc} export DO_DIAG_RPT=${DO_DIAG_RPT:-1} export DO_DATA_RPT=${DO_DATA_RPT:-1} +export RADMON_SUFFIX=${RADMON_SUFFIX:-${RUN}} +export CYCLE_INTERVAL=${assim_freq:-6} +export VERBOSE=${VERBOSE:-YES} + ######################################################## # Execute the script. ${RADMONSH:-${SCRgfs}/exgdas_atmos_verfrad.sh} ${PDY} ${cyc} diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 8c80132d36..c8073b3321 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -11,21 +11,21 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" ############################################## export M_FIX=${M_FIX:-${HOMEgfs}/fix/mon} export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} -export USHminmon=${USHminmon:-${HOMEgfs}/ush} +export USHgfs=${USHgfs:-${HOMEgfs}/ush} ############################################# # Determine PDY and cyc for previous cycle ############################################# -pdate=$(${NDATE} -6 ${PDY}${cyc}) -export P_PDY=${pdate:0:8} -export p_cyc=${pdate:8:2} +GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +export gPDY=${GDATE:0:8} +export gcyc=${GDATE:8:2} ############################################# # TANKverf - WHERE OUTPUT DATA WILL RESIDE ############################################# YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_MINMON -YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL +YMD=${gPDY} HH=${gcyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} @@ -37,7 +37,7 @@ if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi # Set necessary environment variables ######################################## export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} -export CYCLE_INTERVAL=6 +export CYCLE_INTERVAL=${assim_freq} ######################################## # Filenames diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index 1783fe22b8..265487913c 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -44,15 +44,15 @@ if [[ -s ${gsistat} ]]; then #------------------------------------------------------------------ # Run the child sccripts. #------------------------------------------------------------------ - ${USHminmon}/minmon_xtrct_costs.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + ${USHgfs}/minmon_xtrct_costs.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy rc_costs=$? echo "rc_costs = $rc_costs" - ${USHminmon}/minmon_xtrct_gnorms.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + ${USHgfs}/minmon_xtrct_gnorms.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy rc_gnorms=$? echo "rc_gnorms = $rc_gnorms" - ${USHminmon}/minmon_xtrct_reduct.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + ${USHgfs}/minmon_xtrct_reduct.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy rc_reduct=$? echo "rc_reduct = $rc_reduct" From b48772ff4dde1f9243ae52f6973e94f58a41e2f0 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Tue, 28 Nov 2023 08:28:28 -0500 Subject: [PATCH 10/30] Update GDATE setting in JGDAS_ATMOS_VERFOZN Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- jobs/JGDAS_ATMOS_VERFOZN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index cf9b808f77..294ca01832 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -25,7 +25,7 @@ export USHoznmon=${USHoznmon:-${HOMEoznmon}/ush} ############################################# # determine PDY and cyc for previous cycle ############################################# -GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} From 2da43117067d7e5d236934326485db39702973b1 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Tue, 28 Nov 2023 09:03:49 -0500 Subject: [PATCH 11/30] Update exit err catch in JGDAS_ATMOS_VERFRAD Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- jobs/JGDAS_ATMOS_VERFRAD | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 6eea7187e9..c44ef42bb3 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -70,7 +70,9 @@ export VERBOSE=${VERBOSE:-YES} # Execute the script. ${RADMONSH:-${SCRgfs}/exgdas_atmos_verfrad.sh} ${PDY} ${cyc} err=$? -[[ ${err} -ne 0 ]] && exit ${err} +if (( err != 0 )); then + exit "${err}" +fi ################################ # Remove the Working Directory From 3f90e299afa6d6363bcaab09bec61a65157f28ed Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 17:51:13 +0000 Subject: [PATCH 12/30] Move fix to parm - Change symlinks for monitor "fix" files to go to parm. - Rename "parm/mon" to "parm/monitor". Refs #1925 --- .gitignore | 3 +-- sorc/link_workflow.sh | 11 ++++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8f331340d7..f94c17ba35 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,6 @@ fix/gldas fix/gsi fix/lut fix/mom6 -fix/mon fix/orog fix/reg2grb2 fix/sfc_climo @@ -47,7 +46,7 @@ fix/wafs #-------------------------- parm/config/config.base parm/gldas -parm/mon +parm/monitor parm/post/AEROSOL_LUTS.dat parm/post/nam_micro_lookup.dat parm/post/optics_luts_DUST.dat diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 61c12b8346..4c7c3ac463 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -214,9 +214,10 @@ fi #------------------------------ if [[ -d "${HOMEgfs}/sorc/gsi_monitor.fd" ]]; then - cd "${HOMEgfs}/fix" || exit 1 - [[ ! -d mon ]] && ( mkdir -p mon || exit 1 ) - cd mon || exit 1 + cd "${HOMEgfs}/parm" || exit 1 + [[ -d monitor ]] && rm -rf monitor + mkdir -p monitor + cd monitor || exit 1 ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gdas/fix/gdas_minmon_cost.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gdas/fix/gdas_minmon_gnorm.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gfs/fix/gfs_minmon_cost.txt" . @@ -226,10 +227,6 @@ if [[ -d "${HOMEgfs}/sorc/gsi_monitor.fd" ]]; then ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Radiance_Monitor/nwprod/gdas_radmon/fix/gdas_radmon_base.tar" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Radiance_Monitor/nwprod/gdas_radmon/fix/gdas_radmon_satype.txt" . ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Radiance_Monitor/nwprod/gdas_radmon/fix/gdas_radmon_scaninfo.txt" . - cd "${HOMEgfs}/parm" || exit 1 - [[ -d mon ]] && rm -rf mon - mkdir -p mon - cd mon || exit 1 ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Radiance_Monitor/nwprod/gdas_radmon/parm/gdas_radmon.parm" da_mon.parm # ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gdas/parm/gdas_minmon.parm" . # ${LINK_OR_COPY} "${HOMEgfs}/sorc/gsi_monitor.fd/src/Minimization_Monitor/nwprod/gfs/parm/gfs_minmon.parm" . From 054cb3931284003cebc81f2f6b4982b72154611b Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 18:03:04 +0000 Subject: [PATCH 13/30] Further cleanup of monitor scripts - Address reviewer comments and further clean up the monitor scripts. - Remove use of PDATE and replace with PDY and cyc variables. - Move settings from JJOB scripts to configs. Refs #1925 --- jobs/JGDAS_ATMOS_VERFOZN | 44 +++-------------------- jobs/JGDAS_ATMOS_VERFRAD | 45 +++-------------------- jobs/JGLOBAL_ATMOS_VMINMON | 30 ++++------------ parm/config/gfs/config.verfozn | 15 ++++++++ parm/config/gfs/config.verfrad | 19 ++++++++++ parm/config/gfs/config.vminmon | 7 ++++ scripts/exgdas_atmos_verfozn.sh | 10 +++--- scripts/exgdas_atmos_verfrad.sh | 34 +++++++++--------- ush/ozn_xtrct.sh | 34 +++++++++--------- ush/radmon_verf_angle.sh | 33 +++++++---------- ush/radmon_verf_bcoef.sh | 33 ++++++----------- ush/radmon_verf_bcor.sh | 29 ++++++--------- ush/radmon_verf_time.sh | 64 ++++++++++++++------------------- 13 files changed, 156 insertions(+), 241 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 294ca01832..c59c43fa5c 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -6,22 +6,6 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "verfozn" -c "base verfozn" -export OZNMON_SUFFIX=${OZNMON_SUFFIX:-${NET}} - -#--------------------------------------------- -# Specify Execution Areas -# -export HOMEgfs_ozn=${HOMEgfs:-${NWROOT}/gfs.${gfs_ver}} -export HOMEgdas_ozn=${HOMEgfs_ozn:-${NWROOT}/gfs.${gfs_ver}} -export PARMgdas_ozn=${PARMgfs_ozn:-${HOMEgfs_ozn}/parm/mon} -export SCRgdas_ozn=${SCRgfs_ozn:-${HOMEgfs_ozn}/scripts} -export FIXgdas_ozn=${FIXgfs_ozn:-${HOMEgfs_ozn}/fix/mon} - -export HOMEoznmon=${HOMEoznmon:-${HOMEgfs_ozn}} -export EXECoznmon=${EXECoznmon:-${HOMEoznmon}/exec} -export FIXoznmon=${FIXoznmon:-${HOMEoznmon}/fix} -export USHoznmon=${USHoznmon:-${HOMEoznmon}/ush} - ############################################# # determine PDY and cyc for previous cycle ############################################# @@ -35,37 +19,19 @@ export gcyc=${GDATE:8:2} YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_OZNMON +export oznstat="${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.oznstat" export TANKverf_ozn=${TANKverf_ozn:-${COM_ATMOS_OZNMON}} if [[ ! -d ${TANKverf_ozn} ]]; then mkdir -p -m 775 ${TANKverf_ozn} ; fi -#----------------------------------- -# Other variables -# -export OZN_AREA=${OZN_AREA:-glb} -export oznstat=${oznstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.oznstat} -export SATYPE_FILE=${SATYPE_FILE:-${FIXgdas_ozn}/gdas_oznmon_satype.txt} -export PDATE=${PDY}${cyc} -export DO_DATA_RPT=${DO_DATA_RPT:-1} - -#----------------------------------- -# source the parm file -# -. ${PARMgdas_ozn}/gdas_oznmon.parm - -#--------------------------------------- -# Set up validation file -# -if [[ ${VALIDATE_DATA} -eq 1 ]]; then - export ozn_val_file=${ozn_val_file:-${FIXgdas_ozn}/gdas_oznmon_base.tar} -fi - #------------------------------------------------------- # Execute the script. # -${OZNMONSH:-${SCRgdas_ozn}/exgdas_atmos_verfozn.sh} ${PDY} ${cyc} +"${SCRgfs}/exgdas_atmos_verfozn.sh" err=$? -[[ ${err} -ne 0 ]] && exit ${err} +if (( err != 0 )); then + exit "${err}" +fi ################################ diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index c44ef42bb3..a60dc7c47a 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -6,30 +6,10 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" -############################################## -# Specify Execution Areas -############################################## -export HOMEgfs=${HOMEgfs:-${NWROOT}/gfs.${gfs_ver}} -export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} - -export FIXgdas=${FIXgdas:-${HOMEgfs}/fix/mon} -export PARMmon=${PARMmon:-${HOMEgfs}/parm/mon} - -export HOMEradmon=${HOMEradmon:-${HOMEgfs}} -export EXECradmon=${EXECradmon:-${HOMEradmon}/exec} -export FIXradmon=${FIXradmon:-${FIXgfs}} -export USHradmon=${USHradmon:-${HOMEradmon}/ush} - -################################### -# source the parm file -################################### -parm_file=${parm_file:-${PARMmon}/da_mon.parm} -. ${parm_file} - ############################################# # determine PDY and cyc for previous cycle ############################################# -GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} @@ -41,34 +21,17 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON YMD=${gPDY} HH=${gcyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL +export biascr="${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.abias" +export radstat="${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.radstat" export TANKverf_rad=${TANKverf_rad:-${COM_ATMOS_RADMON}} export TANKverf_radM1=${TANKverf_radM1:-${COM_ATMOS_RADMON_PREV}} if [[ ! -d ${TANKverf_rad} ]]; then mkdir -p -m 775 ${TANKverf_rad} ; fi if [[ ! -d ${TANKverf_radM1} ]]; then mkdir -p -m 775 ${TANKverf_radM1} ; fi -############################################# -# Filenames -export biascr=${biascr:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.abias} -export radstat=${radstat:-${COM_ATMOS_ANALYSIS}/gdas.t${cyc}z.radstat} -export satype_file=${satype_file:-${FIXgdas}/gdas_radmon_satype.txt} - -# Other variables -export RAD_AREA=${RAD_AREA:-glb} -export MAKE_CTL=${MAKE_CTL:-1} -export MAKE_DATA=${MAKE_DATA:-1} -export USE_ANL=${USE_ANL:-1} -export PDATE=${PDY}${cyc} -export DO_DIAG_RPT=${DO_DIAG_RPT:-1} -export DO_DATA_RPT=${DO_DATA_RPT:-1} - -export RADMON_SUFFIX=${RADMON_SUFFIX:-${RUN}} -export CYCLE_INTERVAL=${assim_freq:-6} -export VERBOSE=${VERBOSE:-YES} - ######################################################## # Execute the script. -${RADMONSH:-${SCRgfs}/exgdas_atmos_verfrad.sh} ${PDY} ${cyc} +"${SCRgfs}/exgdas_atmos_verfrad.sh" err=$? if (( err != 0 )); then exit "${err}" diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index c8073b3321..b1d4835018 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -6,17 +6,10 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" -############################################## -# Specify Package Areas -############################################## -export M_FIX=${M_FIX:-${HOMEgfs}/fix/mon} -export SCRgfs=${SCRgfs:-${HOMEgfs}/scripts} -export USHgfs=${USHgfs:-${HOMEgfs}/ush} - ############################################# # Determine PDY and cyc for previous cycle ############################################# -GDATE=$(${NDATE} -"${assim_freq}" "${PDY}${cyc}") +GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} @@ -27,31 +20,20 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_MINMON YMD=${gPDY} HH=${gcyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL +export gsistat="${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat" export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi -######################################## -# Set necessary environment variables -######################################## -export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} -export CYCLE_INTERVAL=${assim_freq} - -######################################## -# Filenames -######################################## -export gsistat=${gsistat:-${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat} -export mm_gnormfile=${gnormfile:-${M_FIX}/${RUN}_minmon_gnorm.txt} -export mm_costfile=${costfile:-${M_FIX}/${RUN}_minmon_cost.txt} - ######################################################## # Execute the script. -"${GMONSH:-${SCRgfs}/exglobal_atmos_vminmon.sh}" +"${SCRgfs}/exglobal_atmos_vminmon.sh" err=$? -[[ ${err} -ne 0 ]] && exit ${err} - +if (( err != 0 )); then + exit "${err}" +fi ################################ # Remove the Working Directory diff --git a/parm/config/gfs/config.verfozn b/parm/config/gfs/config.verfozn index 4091db3a11..ad6a927c29 100644 --- a/parm/config/gfs/config.verfozn +++ b/parm/config/gfs/config.verfozn @@ -6,4 +6,19 @@ echo "BEGIN: config.verfozn" # Get task specific resources . "${EXPDIR}/config.resources" verfozn +export DO_DATA_RPT=1 +export OZN_AREA="glb" +export OZNMON_SUFFIX=${NET} +export PARMmonitor=${PARMgfs}/monitor +export SATYPE_FILE=${PARMmonitor}/gdas_oznmon_satype.txt + +# Source the parm file +export parm_file=${PARMmonitor}/gdas_oznmon.parm +. "${parm_file}" + +# Set up validation file +if [[ ${VALIDATE_DATA} -eq 1 ]]; then + export ozn_val_file=${PARMmonitor}/gdas_oznmon_base.tar +fi + echo "END: config.verfozn" diff --git a/parm/config/gfs/config.verfrad b/parm/config/gfs/config.verfrad index e6dffcaa45..09c0d2f2da 100644 --- a/parm/config/gfs/config.verfrad +++ b/parm/config/gfs/config.verfrad @@ -6,4 +6,23 @@ echo "BEGIN: config.verfrad" # Get task specific resources . "${EXPDIR}/config.resources" verfrad +export PARMmonitor=${PARMgfs}/monitor +export satype_file=${PARMmonitor}/gdas_radmon_satype.txt + +# Source the parm file +export parm_file=${PARMmonitor}/da_mon.parm +. "${parm_file}" + +# Other variables +export RAD_AREA="glb" +export MAKE_CTL=1 +export MAKE_DATA=1 +export USE_ANL=1 +export DO_DIAG_RPT=1 +export DO_DATA_RPT=1 + +export RADMON_SUFFIX=${RUN} +export CYCLE_INTERVAL=${assim_freq:-6} +export VERBOSE="YES" + echo "END: config.verfrad" diff --git a/parm/config/gfs/config.vminmon b/parm/config/gfs/config.vminmon index d8888a7cb6..8929c36e0e 100644 --- a/parm/config/gfs/config.vminmon +++ b/parm/config/gfs/config.vminmon @@ -6,4 +6,11 @@ echo "BEGIN: config.vminmon" # Get task specific resources . "${EXPDIR}/config.resources" vminmon +export MINMON_SUFFIX=${MINMON_SUFFIX:-${NET}} +export CYCLE_INTERVAL=${assim_freq:-6} + +export PARMmonitor=${PARMgfs}/monitor +export mm_gnormfile=${PARMmonitor}/${RUN}_minmon_gnorm.txt +export mm_costfile=${PARMmonitor}/${RUN}_minmon_cost.txt + echo "END: config.vminmon" diff --git a/scripts/exgdas_atmos_verfozn.sh b/scripts/exgdas_atmos_verfozn.sh index 3c4e4f2c80..b0e3144701 100755 --- a/scripts/exgdas_atmos_verfozn.sh +++ b/scripts/exgdas_atmos_verfozn.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ # exgdas_atmos_verfozn.sh @@ -21,10 +21,10 @@ if [[ -s ${oznstat} ]]; then # Untar oznstat file. #------------------------------------------------------------------ - $NCP $oznstat ./oznstat.$PDATE + $NCP $oznstat ./oznstat.${PDY}${cyc} - tar -xvf oznstat.$PDATE - rm oznstat.$PDATE + tar -xvf oznstat.${PDY}${cyc} + rm oznstat.${PDY}${cyc} netcdf=0 count=$(ls diag* | grep ".nc4" | wc -l) @@ -38,7 +38,7 @@ if [[ -s ${oznstat} ]]; then export OZNMON_NETCDF=${netcdf} - ${HOMEoznmon}/ush/ozn_xtrct.sh + ${USHgfs}/ozn_xtrct.sh err=$? else diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index dae46c91e2..a5e4fda9cb 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -29,11 +29,11 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # Untar radstat file. #------------------------------------------------------------------ - $NCP $biascr ./biascr.$PDATE - $NCP $radstat ./radstat.$PDATE + $NCP $biascr ./biascr.${PDY}${cyc} + $NCP $radstat ./radstat.${PDY}${cyc} - tar -xvf radstat.$PDATE - rm radstat.$PDATE + tar -xvf radstat.${PDY}${cyc} + rm radstat.${PDY}${cyc} #------------------------------------------------------------------ # SATYPE is the list of expected satellite/instrument sources @@ -92,23 +92,23 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then for type in ${SATYPE}; do - if [[ netcdf -eq 0 && -e diag_${type}_ges.${PDATE}.nc4.${Z} ]]; then + if [[ netcdf -eq 0 && -e diag_${type}_ges.${PDY}${cyc}.nc4.${Z} ]]; then netcdf=1 fi - if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDATE}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_ges.${PDATE}*.${Z} ${type}.${Z} + if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then + mv diag_${type}_ges.${PDY}${cyc}*.${Z} ${type}.${Z} ${UNCOMPRESS} ./${type}.${Z} else - echo "WARNING: diag_${type}_ges.${PDATE}*.${Z} not available, skipping" + echo "WARNING: diag_${type}_ges.${PDY}${cyc}*.${Z} not available, skipping" fi if [[ $USE_ANL -eq 1 ]]; then - if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDATE}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_anl.${PDATE}*.${Z} ${type}_anl.${Z} + if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then + mv diag_${type}_anl.${PDY}${cyc}*.${Z} ${type}_anl.${Z} ${UNCOMPRESS} ./${type}_anl.${Z} else - echo "WARNING: diag_${type}_anl.${PDATE}*.${Z} not available, skipping" + echo "WARNING: diag_${type}_anl.${PDY}${cyc}*.${Z} not available, skipping" fi fi done @@ -117,18 +117,18 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then #------------------------------------------------------------------ - # Run the child sccripts. + # Run the child scripts. #------------------------------------------------------------------ - ${USHradmon}/radmon_verf_angle.sh ${PDATE} + ${USHgfs}/radmon_verf_angle.sh rc_angle=$? - ${USHradmon}/radmon_verf_bcoef.sh ${PDATE} + ${USHgfs}/radmon_verf_bcoef.sh rc_bcoef=$? - ${USHradmon}/radmon_verf_bcor.sh "${PDATE}" + ${USHgfs}/radmon_verf_bcor.sh rc_bcor=$? - ${USHradmon}/radmon_verf_time.sh "${PDATE}" + ${USHgfs}/radmon_verf_time.sh rc_time=$? #-------------------------------------- diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index 3f6b3fed19..e6d27b9c73 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -11,9 +11,9 @@ source "$HOMEgfs/ush/preamble.sh" # $TANKverf_ozn. # # Calling scripts must define: -# $TANKverf_ozn -# $HOMEoznmon -# $PDATE +# $TANKverf_ozn +# $PDY +# $cyc # # Return values are # 0 = normal @@ -28,7 +28,7 @@ source "$HOMEgfs/ush/preamble.sh" # gdas_oznmon_satype.txt to $avail_satype which is # determined by the contents of the oznstat file. # Report any missing diag files in a file named -# bad_diag.$PDATE +# bad_diag.$PDY$cyc # check_diag_files() { pdate=$1 @@ -107,7 +107,7 @@ avail_satype=$(ls -1 d*ges* | sed -e 's/_/ /g;s/\./ /' | gawk '{ print $2 "_" $3 if [[ ${DO_DATA_RPT} -eq 1 ]]; then if [[ -e ${SATYPE_FILE} ]]; then satype=$(cat ${SATYPE_FILE}) - check_diag_files ${PDATE} "${satype}" "${avail_satype}" + check_diag_files "${PDY}${cyc}" "${satype}" "${avail_satype}" else echo "WARNING: missing ${SATYPE_FILE}" fi @@ -132,12 +132,12 @@ else #-------------------------------------------------------------------- # Copy extraction programs to working directory # - ${NCP} ${HOMEoznmon}/exec/oznmon_time.x ./oznmon_time.x + ${NCP} ${HOMEgfs}/exec/oznmon_time.x ./oznmon_time.x if [[ ! -e oznmon_time.x ]]; then iret=2 exit ${iret} fi - ${NCP} ${HOMEoznmon}/exec/oznmon_horiz.x ./oznmon_horiz.x + ${NCP} ${HOMEgfs}/exec/oznmon_horiz.x ./oznmon_horiz.x if [[ ! -e oznmon_horiz.x ]]; then iret=3 exit ${iret} @@ -149,14 +149,14 @@ else # for ptype in ${ozn_ptype}; do - iyy=$(echo ${PDATE} | cut -c1-4) - imm=$(echo ${PDATE} | cut -c5-6) - idd=$(echo ${PDATE} | cut -c7-8) - ihh=$(echo ${PDATE} | cut -c9-10) + iyy=$(echo ${PDY} | cut -c1-4) + imm=$(echo ${PDY} | cut -c5-6) + idd=$(echo ${PDY} | cut -c7-8) + ihh=${cyc} for type in ${avail_satype}; do - if [[ -f "diag_${type}_${ptype}.${PDATE}.gz" ]]; then - mv diag_${type}_${ptype}.${PDATE}.gz ${type}.${ptype}.gz + if [[ -f "diag_${type}_${ptype}.${PDY}${cyc}.gz" ]]; then + mv diag_${type}_${ptype}.${PDY}${cyc}.gz ${type}.${ptype}.gz gunzip ./${type}.${ptype}.gz echo "processing ptype, type: ${ptype}, ${type}" @@ -196,7 +196,7 @@ EOF mkdir -p ${TANKverf_ozn}/time fi $NCP ${type}.${ptype}.ctl ${TANKverf_ozn}/time/ - $NCP ${type}.${ptype}.${PDATE}.ieee_d ${TANKverf_ozn}/time/ + $NCP ${type}.${ptype}.${PDY}${cyc}.ieee_d ${TANKverf_ozn}/time/ $NCP bad* ${TANKverf_ozn}/time/ @@ -228,8 +228,8 @@ EOF fi $NCP ${type}.${ptype}.ctl ${TANKverf_ozn}/horiz/ - $COMPRESS ${type}.${ptype}.${PDATE}.ieee_d - $NCP ${type}.${ptype}.${PDATE}.ieee_d.${Z} ${TANKverf_ozn}/horiz/ + $COMPRESS ${type}.${ptype}.${PDY}${cyc}.ieee_d + $NCP ${type}.${ptype}.${PDY}${cyc}.ieee_d.${Z} ${TANKverf_ozn}/horiz/ echo "finished processing ptype, type: ${ptype}, ${type}" @@ -255,7 +255,7 @@ fi # Conditionally remove data files older than 40 days # if [[ ${CLEAN_TANKDIR:-0} -eq 1 ]]; then - ${HOMEoznmon}/ush/clean_tankdir.sh glb 40 + ${HOMEgfs}/ush/clean_tankdir.sh glb 40 fi exit ${iret} diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index b2dab0825a..507fb72ef7 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -20,17 +20,17 @@ source "$HOMEgfs/ush/preamble.sh" # other supporting files into a temporary working directory. # # -# Usage: radmon_verf_angle.sh PDATE +# Usage: radmon_verf_angle.sh # # Input script positional parameters: -# PDATE processing date +# PDYcyc processing date # yyyymmddcc format; required # # Imported Shell Variables: # RADMON_SUFFIX data source suffix # defauls to opr -# EXECradmon executable directory -# defaults to current directory +# EXECgfs executable directory +# PARMmonitor parm directory # RAD_AREA global or regional flag # defaults to global # TANKverf_rad data repository @@ -72,8 +72,6 @@ REGIONAL_RR=${REGIONAL_RR:-0} # rapid refresh model flag rgnHH=${rgnHH:-} rgnTM=${rgnTM:-} -export PDATE=${1:-${PDATE:?}} - echo " REGIONAL_RR, rgnHH, rgnTM = $REGIONAL_RR, $rgnHH, $rgnTM" netcdf_boolean=".false." if [[ $RADMON_NETCDF -eq 1 ]]; then @@ -84,11 +82,6 @@ echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, $netcdf_boolean" which prep_step which startmsg -# Directories -FIXgdas=${FIXgdas:-$(pwd)} -EXECradmon=${EXECradmon:-$(pwd)} -TANKverf_rad=${TANKverf_rad:-$(pwd)} - # File names export pgmout=${pgmout:-${jlogfile}} touch $pgmout @@ -108,13 +101,13 @@ fi err=0 angle_exec=radmon_angle.x -shared_scaninfo=${shared_scaninfo:-$FIXgdas/gdas_radmon_scaninfo.txt} +shared_scaninfo=${shared_scaninfo:-${PARMmonitor}/gdas_radmon_scaninfo.txt} scaninfo=scaninfo.txt #-------------------------------------------------------------------- # Copy extraction program and supporting files to working directory -$NCP ${EXECradmon}/${angle_exec} ./ +$NCP ${EXECgfs}/${angle_exec} ./ $NCP $shared_scaninfo ./${scaninfo} if [[ ! -s ./${angle_exec} || ! -s ./${scaninfo} ]]; then @@ -125,10 +118,10 @@ else export pgm=${angle_exec} - iyy=$(echo $PDATE | cut -c1-4) - imm=$(echo $PDATE | cut -c5-6) - idd=$(echo $PDATE | cut -c7-8) - ihh=$(echo $PDATE | cut -c9-10) + iyy=$(echo ${PDY} | cut -c1-4) + imm=$(echo ${PDY} | cut -c5-6) + idd=$(echo ${PDY} | cut -c7-8) + ihh=${cyc} ctr=0 fail=0 @@ -150,11 +143,11 @@ else ctr=$(expr $ctr + 1) if [[ $dtype == "anl" ]]; then - data_file=${type}_anl.${PDATE}.ieee_d + data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl angl_ctl=angle.${ctl_file} else - data_file=${type}.${PDATE}.ieee_d + data_file=${type}.${PDY}${cyc}.ieee_d ctl_file=${type}.ctl angl_ctl=angle.${ctl_file} fi @@ -207,7 +200,7 @@ EOF done # for type in ${SATYPE} loop - ${USHradmon}/rstprod.sh + ${USHgfs}/rstprod.sh tar_file=radmon_angle.tar if compgen -G "angle*.ieee_d*" > /dev/null || compgen -G "angle*.ctl*" > /dev/null; then diff --git a/ush/radmon_verf_bcoef.sh b/ush/radmon_verf_bcoef.sh index 374c8db7b2..4485f81786 100755 --- a/ush/radmon_verf_bcoef.sh +++ b/ush/radmon_verf_bcoef.sh @@ -20,23 +20,19 @@ source "$HOMEgfs/ush/preamble.sh" # other supporting files into a temporary working directory. # # -# Usage: radmon_verf_bcoef.sh PDATE +# Usage: radmon_verf_bcoef.sh # # Input script positional parameters: -# PDATE processing date +# PDYcyc processing date # yyyymmddcc format; required # # Imported Shell Variables: # RADMON_SUFFIX data source suffix # defauls to opr -# EXECradmon executable directory -# defaults to current directory -# FIXradmon fixed data directory -# defaults to current directory +# EXECgfs executable directory # RAD_AREA global or regional flag # defaults to global # TANKverf_rad data repository -# defaults to current directory # SATYPE list of satellite/instrument sources # defaults to none # LITTLE_ENDIAN flag for LE machine @@ -65,8 +61,6 @@ source "$HOMEgfs/ush/preamble.sh" # >0 - some problem encountered # #################################################################### -# Command line arguments. -export PDATE=${1:-${PDATE:?}} netcdf_boolean=".false." if [[ $RADMON_NETCDF -eq 1 ]]; then @@ -74,11 +68,6 @@ if [[ $RADMON_NETCDF -eq 1 ]]; then fi echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, $netcdf_boolean" -# Directories -FIXgdas=${FIXgdas:-$(pwd)} -EXECradmon=${EXECradmon:-$(pwd)} -TANKverf_rad=${TANKverf_rad:-$(pwd)} - # File names pgmout=${pgmout:-${jlogfile}} touch $pgmout @@ -105,7 +94,7 @@ fi #-------------------------------------------------------------------- # Copy extraction program and supporting files to working directory -$NCP $EXECradmon/${bcoef_exec} ./${bcoef_exec} +$NCP $EXECgfs/${bcoef_exec} ./${bcoef_exec} $NCP ${biascr} ./biascr.txt if [[ ! -s ./${bcoef_exec} || ! -s ./biascr.txt ]]; then @@ -118,10 +107,10 @@ else export pgm=${bcoef_exec} - iyy=$(echo $PDATE | cut -c1-4) - imm=$(echo $PDATE | cut -c5-6) - idd=$(echo $PDATE | cut -c7-8) - ihh=$(echo $PDATE | cut -c9-10) + iyy=$(echo ${PDY} | cut -c1-4) + imm=$(echo ${PDY} | cut -c5-6) + idd=$(echo ${PDY} | cut -c7-8) + ihh=${cyc} ctr=0 fail=0 @@ -143,11 +132,11 @@ else ctr=$(expr $ctr + 1) if [[ $dtype == "anl" ]]; then - data_file=${type}_anl.${PDATE}.ieee_d + data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl bcoef_ctl=bcoef.${ctl_file} else - data_file=${type}.${PDATE}.ieee_d + data_file=${type}.${PDY}${cyc}.ieee_d ctl_file=${type}.ctl bcoef_ctl=bcoef.${ctl_file} fi @@ -204,7 +193,7 @@ EOF done # type in $SATYPE loop - ${USHradmon}/rstprod.sh + ${USHgfs}/rstprod.sh if compgen -G "bcoef*.ieee_d*" > /dev/null || compgen -G "bcoef*.ctl*" > /dev/null; then tar_file=radmon_bcoef.tar diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index 3e267f018c..a01238e6ca 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -20,16 +20,16 @@ source "$HOMEgfs/ush/preamble.sh" # other supporting files into a temporary working directory. # # -# Usage: radmon_verf_bcor.sh PDATE +# Usage: radmon_verf_bcor.sh # # Input script positional parameters: -# PDATE processing date +# PDYcyc processing date # yyyymmddcc format; required # # Imported Shell Variables: # RADMON_SUFFIX data source suffix # defauls to opr -# EXECradmon executable directory +# EXECgfs executable directory # defaults to current directory # RAD_AREA global or regional flag # defaults to global @@ -64,13 +64,6 @@ source "$HOMEgfs/ush/preamble.sh" # #################################################################### -# Command line arguments. -export PDATE=${1:-${PDATE:?}} - -# Directories -EXECradmon=${EXECradmon:-$(pwd)} -TANKverf_rad=${TANKverf_rad:-$(pwd)} - # File names pgmout=${pgmout:-${jlogfile}} touch $pgmout @@ -99,7 +92,7 @@ fi #-------------------------------------------------------------------- # Copy extraction program to working directory -$NCP ${EXECradmon}/${bcor_exec} ./${bcor_exec} +$NCP ${EXECgfs}/${bcor_exec} ./${bcor_exec} if [[ ! -s ./${bcor_exec} ]]; then err=6 @@ -111,10 +104,10 @@ else export pgm=${bcor_exec} - iyy=$(echo $PDATE | cut -c1-4) - imm=$(echo $PDATE | cut -c5-6) - idd=$(echo $PDATE | cut -c7-8) - ihh=$(echo $PDATE | cut -c9-10) + iyy=$(echo ${PDY} | cut -c1-4) + imm=$(echo ${PDY} | cut -c5-6) + idd=$(echo ${PDY} | cut -c7-8) + ihh=${cyc} ctr=0 fail=0 @@ -129,7 +122,7 @@ else ctr=$(expr $ctr + 1) if [[ $dtype == "anl" ]]; then - data_file=${type}_anl.${PDATE}.ieee_d + data_file=${type}_anl.${PDY}${cyc}.ieee_d bcor_file=bcor.${data_file} ctl_file=${type}_anl.ctl bcor_ctl=bcor.${ctl_file} @@ -137,7 +130,7 @@ else bcor_stdout=bcor.${stdout_file} input_file=${type}_anl else - data_file=${type}.${PDATE}.ieee_d + data_file=${type}.${PDY}${cyc}.ieee_d bcor_file=bcor.${data_file} ctl_file=${type}.ctl bcor_ctl=bcor.${ctl_file} @@ -197,7 +190,7 @@ EOF done # type in $SATYPE loop - ${USHradmon}/rstprod.sh + ${USHgfs}/rstprod.sh tar_file=radmon_bcor.tar if compgen -G "bcor*.ieee_d*" > /dev/null || compgen -G "bcor*.ctl*" > /dev/null; then diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 51743277c9..c2d454dd29 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -22,10 +22,10 @@ source "$HOMEgfs/ush/preamble.sh" # other supporting files into a temporary working directory. # # -# Usage: radmon_verf_time.sh PDATE +# Usage: radmon_verf_time.sh ${PDY}${cyc} # # Input script positional parameters: -# PDATE processing date +# PDYcyc processing date # yyyymmddcc format; required # # Imported Shell Variables: @@ -33,14 +33,11 @@ source "$HOMEgfs/ush/preamble.sh" # defaults to 1 (on) # RADMON_SUFFIX data source suffix # defauls to opr -# EXECradmon executable directory -# defaults to current directory -# FIXgdas fixed data directory -# defaults to current directory +# EXECgfs executable directory +# PARMmonitor parm data directory # RAD_AREA global or regional flag # defaults to global # TANKverf_rad data repository -# defaults to current directory # SATYPE list of satellite/instrument sources # defaults to none # VERBOSE Verbose flag (YES or NO) @@ -77,20 +74,12 @@ source "$HOMEgfs/ush/preamble.sh" # #################################################################### -# Command line arguments. -export PDATE=${1:-${PDATE:?}} - -# Directories -FIXgdas=${FIXgdas:-$(pwd)} -EXECradmon=${EXECradmon:-$(pwd)} -TANKverf_rad=${TANKverf_rad:-$(pwd)} - # File names #pgmout=${pgmout:-${jlogfile}} #touch $pgmout -radmon_err_rpt=${radmon_err_rpt:-${USHradmon}/radmon_err_rpt.sh} -base_file=${base_file:-$FIXgdas/gdas_radmon_base.tar} +radmon_err_rpt=${radmon_err_rpt:-${USHgfs}/radmon_err_rpt.sh} +base_file=${base_file:-${PARMmonitor}/gdas_radmon_base.tar} report=report.txt disclaimer=disclaimer.txt @@ -137,17 +126,16 @@ fi #-------------------------------------------------------------------- # Copy extraction program and base files to working directory #------------------------------------------------------------------- -$NCP ${EXECradmon}/${time_exec} ./ +$NCP ${EXECgfs}/${time_exec} ./ if [[ ! -s ./${time_exec} ]]; then err=8 fi -iyy=$(echo $PDATE | cut -c1-4) -imm=$(echo $PDATE | cut -c5-6) -idd=$(echo $PDATE | cut -c7-8) -ihh=$(echo $PDATE | cut -c9-10) -cyc=$ihh -CYCLE=$cyc +iyy=$(echo $PDY | cut -c1-4) +imm=$(echo $PDY | cut -c5-6) +idd=$(echo $PDY | cut -c7-8) +ihh=${cyc} +CYCLE=${cyc} local_base="local_base" if [[ $DO_DATA_RPT -eq 1 ]]; then @@ -190,11 +178,11 @@ if [[ $err -eq 0 ]]; then if [[ -f input ]]; then rm input; fi if [[ $dtype == "anl" ]]; then - data_file=${type}_anl.${PDATE}.ieee_d + data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl time_ctl=time.${ctl_file} else - data_file=${type}.${PDATE}.ieee_d + data_file=${type}.${PDY}${cyc}.ieee_d ctl_file=${type}.ctl time_ctl=time.${ctl_file} fi @@ -250,7 +238,7 @@ EOF done - ${USHradmon}/rstprod.sh + ${USHgfs}/rstprod.sh if compgen -G "time*.ieee_d*" > /dev/null || compgen -G "time*.ctl*" > /dev/null; then tar_file=radmon_time.tar @@ -302,7 +290,7 @@ EOF # tmp_satype="./tmp_satype.txt" echo ${SATYPE} > ${tmp_satype} - ${USHradmon}/radmon_diag_ck.sh --rad ${radstat} --sat ${tmp_satype} --out ${diag} + ${USHgfs}/radmon_diag_ck.sh --rad ${radstat} --sat ${tmp_satype} --out ${diag} if [[ -s ${diag} ]]; then cat << EOF > ${diag_hdr} @@ -332,7 +320,7 @@ EOF if [[ $lines -gt 0 ]]; then cat ${diag_report} - cp ${diag} ${TANKverf_rad}/bad_diag.${PDATE} + cp ${diag} ${TANKverf_rad}/bad_diag.${PDY}${cyc} else rm ${diag_report} fi @@ -344,11 +332,11 @@ EOF # Identify bad_pen and bad_chan files for this cycle and # previous cycle - bad_pen=bad_pen.${PDATE} - bad_chan=bad_chan.${PDATE} - low_count=low_count.${PDATE} + bad_pen=bad_pen.${PDY}${cyc} + bad_chan=bad_chan.${PDY}${cyc} + low_count=low_count.${PDY}${cyc} - qdate=$($NDATE -${CYCLE_INTERVAL} $PDATE) + qdate=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") pday=$(echo $qdate | cut -c1-8) prev_bad_pen=bad_pen.${qdate} @@ -419,21 +407,21 @@ EOF echo "calling radmon_err_rpt for pen" ${radmon_err_rpt} ${prev_bad_pen} ${bad_pen} pen ${qdate} \ - ${PDATE} ${diag_report} ${pen_err} + ${PDY}${cyc} ${diag_report} ${pen_err} fi if [[ $do_chan -eq 1 ]]; then echo "calling radmon_err_rpt for chan" ${radmon_err_rpt} ${prev_bad_chan} ${bad_chan} chan ${qdate} \ - ${PDATE} ${diag_report} ${chan_err} + ${PDY}${cyc} ${diag_report} ${chan_err} fi if [[ $do_cnt -eq 1 ]]; then echo "calling radmon_err_rpt for cnt" ${radmon_err_rpt} ${prev_low_count} ${low_count} cnt ${qdate} \ - ${PDATE} ${diag_report} ${count_err} + ${PDY}${cyc} ${diag_report} ${count_err} fi #------------------------------------------------------------------- @@ -450,7 +438,7 @@ Radiance Monitor warning report Net: ${RADMON_SUFFIX} Run: ${RUN} - Cycle: $PDATE + Cycle: ${PDY}${cyc} EOF @@ -526,7 +514,7 @@ EOF if [[ $lines -gt 2 ]]; then cat ${report} - $NCP ${report} ${TANKverf_rad}/warning.${PDATE} + $NCP ${report} ${TANKverf_rad}/warning.${PDY}${cyc} fi fi From 43e1fa006f22af2750f0f47a3afbcbd3258be1aa Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 12:35:20 -0600 Subject: [PATCH 14/30] Address shellcheck warnings - Resolve some SC2086 and SC2250 warnings. Refs #1925 --- jobs/JGLOBAL_ATMOS_VMINMON | 4 +- scripts/exglobal_atmos_vminmon.sh | 24 ++--- ush/ozn_xtrct.sh | 54 +++++----- ush/radmon_verf_time.sh | 172 +++++++++++++++--------------- 4 files changed, 127 insertions(+), 127 deletions(-) diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index b1d4835018..27905b139e 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -24,8 +24,8 @@ export gsistat="${COM_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.gsistat" export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} -if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi -if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi +if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 "${M_TANKverf}" ; fi +if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 "${M_TANKverfM1}" ; fi ######################################################## # Execute the script. diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index 265487913c..1d0ffedb37 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -44,17 +44,17 @@ if [[ -s ${gsistat} ]]; then #------------------------------------------------------------------ # Run the child sccripts. #------------------------------------------------------------------ - ${USHgfs}/minmon_xtrct_costs.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + "${USHgfs}/minmon_xtrct_costs.pl" "${MINMON_SUFFIX}" "${PDY}" "${cyc}" "${gsistat}" dummy rc_costs=$? - echo "rc_costs = $rc_costs" + echo "rc_costs = ${rc_costs}" - ${USHgfs}/minmon_xtrct_gnorms.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + "${USHgfs}/minmon_xtrct_gnorms.pl" "${MINMON_SUFFIX}" "${PDY}" "${cyc}" "${gsistat}" dummy rc_gnorms=$? - echo "rc_gnorms = $rc_gnorms" + echo "rc_gnorms = ${rc_gnorms}" - ${USHgfs}/minmon_xtrct_reduct.pl ${MINMON_SUFFIX} ${PDY} ${cyc} ${gsistat} dummy + "${USHgfs}/minmon_xtrct_reduct.pl" "${MINMON_SUFFIX}" "${PDY}" "${cyc}" "${gsistat}" dummy rc_reduct=$? - echo "rc_reduct = $rc_reduct" + echo "rc_reduct = ${rc_reduct}" fi @@ -64,12 +64,12 @@ fi err=0 if [[ ${data_available} -ne 1 ]]; then err=1 -elif [[ $rc_costs -ne 0 ]]; then - err=$rc_costs -elif [[ $rc_gnorms -ne 0 ]]; then - err=$rc_gnorms -elif [[ $rc_reduct -ne 0 ]]; then - err=$rc_reduct +elif [[ ${rc_costs} -ne 0 ]]; then + err=${rc_costs} +elif [[ ${rc_gnorms} -ne 0 ]]; then + err=${rc_gnorms} +elif [[ ${rc_reduct} -ne 0 ]]; then + err=${rc_reduct} fi exit ${err} diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index e6d27b9c73..560f563d25 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -40,10 +40,10 @@ check_diag_files() { echo ""; echo ""; echo "--> check_diag_files" for type in ${found_satype}; do - len_check=$(echo ${avail_satype} | grep ${type} | wc -c) + len_check=$(echo "${avail_satype}" | grep "${type}" | wc -c) if [[ ${len_check} -le 1 ]]; then - echo "missing diag file -- diag_${type}_ges.${pdate}.gz not found " >> ./${out_file} + echo "missing diag file -- diag_${type}_ges.${pdate}.gz not found" >> "./${out_file}" fi done @@ -79,9 +79,9 @@ if [[ $VALIDATE_DATA -eq 1 ]]; then VALIDATE_DATA=0 else validate=".TRUE." - val_file=$(basename ${ozn_val_file}) - ${NCP} $ozn_val_file $val_file - tar -xvf $val_file + val_file=$(basename "${ozn_val_file}") + ${NCP} "$ozn_val_file" "$val_file" + tar -xvf "$val_file" fi fi echo "VALIDATE_DATA, validate = $VALIDATE_DATA, $validate " @@ -106,7 +106,7 @@ avail_satype=$(ls -1 d*ges* | sed -e 's/_/ /g;s/\./ /' | gawk '{ print $2 "_" $3 if [[ ${DO_DATA_RPT} -eq 1 ]]; then if [[ -e ${SATYPE_FILE} ]]; then - satype=$(cat ${SATYPE_FILE}) + satype=$(cat "${SATYPE_FILE}") check_diag_files "${PDY}${cyc}" "${satype}" "${avail_satype}" else echo "WARNING: missing ${SATYPE_FILE}" @@ -119,7 +119,7 @@ if [[ ${len_satype} -le 1 ]]; then satype=${avail_satype} fi -echo ${satype} +echo "${satype}" len_satype=$(echo -n "${satype}" | wc -c) @@ -132,12 +132,12 @@ else #-------------------------------------------------------------------- # Copy extraction programs to working directory # - ${NCP} ${HOMEgfs}/exec/oznmon_time.x ./oznmon_time.x + ${NCP} "${HOMEgfs}/exec/oznmon_time.x" ./oznmon_time.x if [[ ! -e oznmon_time.x ]]; then iret=2 exit ${iret} fi - ${NCP} ${HOMEgfs}/exec/oznmon_horiz.x ./oznmon_horiz.x + ${NCP} "${HOMEgfs}/exec/oznmon_horiz.x" ./oznmon_horiz.x if [[ ! -e oznmon_horiz.x ]]; then iret=3 exit ${iret} @@ -149,15 +149,15 @@ else # for ptype in ${ozn_ptype}; do - iyy=$(echo ${PDY} | cut -c1-4) - imm=$(echo ${PDY} | cut -c5-6) - idd=$(echo ${PDY} | cut -c7-8) + iyy=$(echo "${PDY}" | cut -c1-4) + imm=$(echo "${PDY}" | cut -c5-6) + idd=$(echo "${PDY}" | cut -c7-8) ihh=${cyc} for type in ${avail_satype}; do if [[ -f "diag_${type}_${ptype}.${PDY}${cyc}.gz" ]]; then - mv diag_${type}_${ptype}.${PDY}${cyc}.gz ${type}.${ptype}.gz - gunzip ./${type}.${ptype}.gz + mv "diag_${type}_${ptype}.${PDY}${cyc}.gz" "${type}.${ptype}.gz" + gunzip "./${type}.${ptype}.gz" echo "processing ptype, type: ${ptype}, ${type}" rm -f input @@ -188,17 +188,17 @@ EOF echo "oznmon_time.x HAS STARTED ${type}" - ./oznmon_time.x < input > stdout.time.${type}.${ptype} + ./oznmon_time.x < input > "stdout.time.${type}.${ptype}" echo "oznmon_time.x HAS ENDED ${type}" if [[ ! -d ${TANKverf_ozn}/time ]]; then - mkdir -p ${TANKverf_ozn}/time + mkdir -p "${TANKverf_ozn}/time" fi - $NCP ${type}.${ptype}.ctl ${TANKverf_ozn}/time/ - $NCP ${type}.${ptype}.${PDY}${cyc}.ieee_d ${TANKverf_ozn}/time/ + $NCP "${type}.${ptype}.ctl "${TANKverf_ozn}/time/" + $NCP "${type}.${ptype}.${PDY}${cyc}.ieee_d" "${TANKverf_ozn}/time/" - $NCP bad* ${TANKverf_ozn}/time/ + $NCP bad* "${TANKverf_ozn}/time/" rm -f input @@ -219,17 +219,17 @@ EOF echo "oznmon_horiz.x HAS STARTED ${type}" - ./oznmon_horiz.x < input > stdout.horiz.${type}.${ptype} + ./oznmon_horiz.x < input > "stdout.horiz.${type}.${ptype}" echo "oznmon_horiz.x HAS ENDED ${type}" if [[ ! -d ${TANKverf_ozn}/horiz ]]; then - mkdir -p ${TANKverf_ozn}/horiz + mkdir -p "${TANKverf_ozn}/horiz" fi - $NCP ${type}.${ptype}.ctl ${TANKverf_ozn}/horiz/ + $NCP "${type}.${ptype}.ctl" "${TANKverf_ozn}/horiz/" - $COMPRESS ${type}.${ptype}.${PDY}${cyc}.ieee_d - $NCP ${type}.${ptype}.${PDY}${cyc}.ieee_d.${Z} ${TANKverf_ozn}/horiz/ + $COMPRESS "${type}.${ptype}.${PDY}${cyc}.ieee_d" + $NCP "${type}.${ptype}.${PDY}${cyc}.ieee_d.${Z}" "${TANKverf_ozn}/horiz/" echo "finished processing ptype, type: ${ptype}, ${type}" @@ -244,18 +244,18 @@ EOF tar -cvf stdout.horiz.tar stdout.horiz* ${COMPRESS} stdout.horiz.tar - ${NCP} stdout.horiz.tar.${Z} ${TANKverf_ozn}/horiz/ + ${NCP} "stdout.horiz.tar.${Z}" "${TANKverf_ozn}/horiz/" tar -cvf stdout.time.tar stdout.time* ${COMPRESS} stdout.time.tar - ${NCP} stdout.time.tar.${Z} ${TANKverf_ozn}/time/ + ${NCP} "stdout.time.tar.${Z}" "${TANKverf_ozn}/time/" fi #------------------------------------------------------- # Conditionally remove data files older than 40 days # if [[ ${CLEAN_TANKDIR:-0} -eq 1 ]]; then - ${HOMEgfs}/ush/clean_tankdir.sh glb 40 + "${HOMEgfs}/ush/clean_tankdir.sh" glb 40 fi exit ${iret} diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index c2d454dd29..9e3f51e2e6 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -98,7 +98,7 @@ count_hdr=count_hdr.txt count_err=count_err.txt netcdf_boolean=".false." -if [[ $RADMON_NETCDF -eq 1 ]]; then +if [[ ${RADMON_NETCDF} -eq 1 ]]; then netcdf_boolean=".true." fi @@ -116,7 +116,7 @@ time_exec=radmon_time.x USE_ANL=${USE_ANL:-0} err=0 -if [[ $USE_ANL -eq 1 ]]; then +if [[ ${USE_ANL} -eq 1 ]]; then gesanl="ges anl" else gesanl="ges" @@ -126,25 +126,25 @@ fi #-------------------------------------------------------------------- # Copy extraction program and base files to working directory #------------------------------------------------------------------- -$NCP ${EXECgfs}/${time_exec} ./ +${NCP} "${EXECgfs}/${time_exec}" ./ if [[ ! -s ./${time_exec} ]]; then err=8 fi -iyy=$(echo $PDY | cut -c1-4) -imm=$(echo $PDY | cut -c5-6) -idd=$(echo $PDY | cut -c7-8) +iyy=$(echo "${PDY}" | cut -c1-4) +imm=$(echo "${PDY}" | cut -c5-6) +idd=$(echo "${PDY}" | cut -c7-8) ihh=${cyc} CYCLE=${cyc} local_base="local_base" -if [[ $DO_DATA_RPT -eq 1 ]]; then +if [[ ${DO_DATA_RPT} -eq 1 ]]; then if [[ -e ${base_file}.${Z} ]]; then - $NCP ${base_file}.${Z} ./${local_base}.{Z} - ${UNCOMPRESS} ${local_base}.${Z} + ${NCP} "${base_file}.${Z}" "./${local_base}.${Z}" + ${UNCOMPRESS} "${local_base}.${Z}" else - $NCP ${base_file} ./${local_base} + ${NCP} "${base_file}" ./${local_base} fi if [[ ! -s ./${local_base} ]]; then @@ -156,7 +156,7 @@ if [[ $DO_DATA_RPT -eq 1 ]]; then fi fi -if [[ $err -eq 0 ]]; then +if [[ ${err} -eq 0 ]]; then ctr=0 fail=0 @@ -171,13 +171,13 @@ if [[ $err -eq 0 ]]; then continue fi - ctr=$(expr $ctr + 1) + ctr=$(expr ${ctr} + 1) for dtype in ${gesanl}; do if [[ -f input ]]; then rm input; fi - if [[ $dtype == "anl" ]]; then + if [[ ${dtype} == "anl" ]]; then data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl time_ctl=time.${ctl_file} @@ -187,7 +187,7 @@ if [[ $err -eq 0 ]]; then time_ctl=time.${ctl_file} fi - if [[ $REGIONAL_RR -eq 1 ]]; then + if [[ ${REGIONAL_RR} -eq 1 ]]; then time_file=${rgnHH}.time.${data_file}.${rgnTM} else time_file=time.${data_file} @@ -215,48 +215,48 @@ cat << EOF > input / EOF - ./${time_exec} < input >> stdout.${type} 2>>errfile + ./${time_exec} < input >> stdout."${type}" 2>>errfile - if [[ $err -ne 0 ]]; then - fail=$(expr $fail + 1) + if [[ ${err} -ne 0 ]]; then + fail=$(expr ${fail} + 1) fi #------------------------------------------------------------------- # move data, control, and stdout files to $TANKverf_rad and compress #------------------------------------------------------------------- - cat stdout.${type} >> stdout.time + cat "stdout.${type}" >> stdout.time if [[ -s ${time_file} ]]; then - ${COMPRESS} ${time_file} + ${COMPRESS} "${time_file}" fi if [[ -s ${time_ctl} ]]; then - ${COMPRESS} ${time_ctl} + ${COMPRESS} "${time_ctl}" fi done done - ${USHgfs}/rstprod.sh + "${USHgfs}/rstprod.sh" if compgen -G "time*.ieee_d*" > /dev/null || compgen -G "time*.ctl*" > /dev/null; then tar_file=radmon_time.tar - tar -cf $tar_file time*.ieee_d* time*.ctl* + tar -cf ${tar_file} time*.ieee_d* time*.ctl* ${COMPRESS} ${tar_file} - mv $tar_file.${Z} ${TANKverf_rad}/. + mv "${tar_file}.${Z}" "${TANKverf_rad}/." - if [[ $RAD_AREA = "rgn" ]]; then + if [[ ${RAD_AREA} = "rgn" ]]; then cwd=$(pwd) - cd ${TANKverf_rad} - tar -xf ${tar_file}.${Z} - rm ${tar_file}.${Z} - cd ${cwd} + cd "${TANKverf_rad}" + tar -xf "${tar_file}.${Z}" + rm "${tar_file}.${Z}" + cd "${cwd}" fi fi - if [[ $ctr -gt 0 && $fail -eq $ctr || $fail -gt $ctr ]]; then - echo "fail, ctr = $fail, $ctr" + if [[ ${ctr} -gt 0 && ${fail} -eq ${ctr} || ${fail} -gt ${ctr} ]]; then + echo "fail, ctr = ${fail}, ${ctr}" err=10 fi @@ -270,7 +270,7 @@ fi #------------------------------------------------------------------- #################################################################### -if [[ $DO_DATA_RPT -eq 1 ]]; then +if [[ ${DO_DATA_RPT} -eq 1 ]]; then #--------------------------- # build report disclaimer @@ -289,8 +289,8 @@ EOF # Check for missing diag files # tmp_satype="./tmp_satype.txt" - echo ${SATYPE} > ${tmp_satype} - ${USHgfs}/radmon_diag_ck.sh --rad ${radstat} --sat ${tmp_satype} --out ${diag} + echo "${SATYPE}" > ${tmp_satype} + "${USHgfs}/radmon_diag_ck.sh" --rad "${radstat}" --sat "${tmp_satype}" --out "${diag}" if [[ -s ${diag} ]]; then cat << EOF > ${diag_hdr} @@ -316,11 +316,11 @@ EOF # if [[ -s ${diag} ]]; then lines=$(wc -l <${diag}) - echo "lines in diag = $lines" + echo "lines in diag = ${lines}" - if [[ $lines -gt 0 ]]; then + if [[ ${lines} -gt 0 ]]; then cat ${diag_report} - cp ${diag} ${TANKverf_rad}/bad_diag.${PDY}${cyc} + cp ${diag} "${TANKverf_rad}/bad_diag.${PDY}${cyc}" else rm ${diag_report} fi @@ -337,7 +337,7 @@ EOF low_count=low_count.${PDY}${cyc} qdate=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") - pday=$(echo $qdate | cut -c1-8) + pday=$(echo "${qdate}" | cut -c1-8) prev_bad_pen=bad_pen.${qdate} prev_bad_chan=bad_chan.${qdate} @@ -347,35 +347,35 @@ EOF prev_bad_chan=${TANKverf_radM1}/${prev_bad_chan} prev_low_count=${TANKverf_radM1}/${prev_low_count} - if [[ -s $bad_pen ]]; then - echo "pad_pen = $bad_pen" + if [[ -s ${bad_pen} ]]; then + echo "pad_pen = ${bad_pen}" fi - if [[ -s $prev_bad_pen ]]; then - echo "prev_pad_pen = $prev_bad_pen" + if [[ -s ${prev_bad_pen} ]]; then + echo "prev_pad_pen = ${prev_bad_pen}" fi - if [[ -s $bad_chan ]]; then - echo "bad_chan = $bad_chan" + if [[ -s ${bad_chan} ]]; then + echo "bad_chan = ${bad_chan}" fi - if [[ -s $prev_bad_chan ]]; then - echo "prev_bad_chan = $prev_bad_chan" + if [[ -s ${prev_bad_chan} ]]; then + echo "prev_bad_chan = ${prev_bad_chan}" fi - if [[ -s $low_count ]]; then - echo "low_count = $low_count" + if [[ -s ${low_count} ]]; then + echo "low_count = ${low_count}" fi - if [[ -s $prev_low_count ]]; then - echo "prev_low_count = $prev_low_count" + if [[ -s ${prev_low_count} ]]; then + echo "prev_low_count = ${prev_low_count}" fi do_pen=0 do_chan=0 do_cnt=0 - if [[ -s $bad_pen && -s $prev_bad_pen ]]; then + if [[ -s ${bad_pen} && -s ${prev_bad_pen} ]]; then do_pen=1 fi - if [[ -s $low_count && -s $prev_low_count ]]; then + if [[ -s ${low_count} && -s ${prev_low_count} ]]; then do_cnt=1 fi @@ -383,7 +383,7 @@ EOF # avoid doing the bad_chan report for REGIONAL_RR sources -- because # they run hourly they often have 0 count channels for off-hour runs. # - if [[ -s $bad_chan && -s $prev_bad_chan && REGIONAL_RR -eq 0 ]]; then + if [[ -s ${bad_chan} && -s ${prev_bad_chan} && REGIONAL_RR -eq 0 ]]; then do_chan=1 fi @@ -391,37 +391,37 @@ EOF # Remove extra spaces in new bad_pen & low_count files # if [[ -s ${bad_pen} ]]; then - gawk '{$1=$1}1' $bad_pen > tmp.bad_pen - mv -f tmp.bad_pen $bad_pen + gawk '{$1=$1}1' "${bad_pen}" > tmp.bad_pen + mv -f tmp.bad_pen "${bad_pen}" fi if [[ -s ${low_count} ]]; then - gawk '{$1=$1}1' $low_count > tmp.low_count - mv -f tmp.low_count $low_count + gawk '{$1=$1}1' "${low_count}" > tmp.low_count + mv -f tmp.low_count "${low_count}" fi - echo " do_pen, do_chan, do_cnt = $do_pen, $do_chan, $do_cnt" - echo " diag_report = $diag_report " - if [[ $do_pen -eq 1 || $do_chan -eq 1 || $do_cnt -eq 1 || -s ${diag_report} ]]; then + echo " do_pen, do_chan, do_cnt = ${do_pen}, ${do_chan}, ${do_cnt}" + echo " diag_report = ${diag_report} " + if [[ ${do_pen} -eq 1 || ${do_chan} -eq 1 || ${do_cnt} -eq 1 || -s ${diag_report} ]]; then - if [[ $do_pen -eq 1 ]]; then + if [[ ${do_pen} -eq 1 ]]; then echo "calling radmon_err_rpt for pen" - ${radmon_err_rpt} ${prev_bad_pen} ${bad_pen} pen ${qdate} \ - ${PDY}${cyc} ${diag_report} ${pen_err} + ${radmon_err_rpt} "${prev_bad_pen}" "${bad_pen}" pen "${qdate}" \ + "${PDY}${cyc}" ${diag_report} ${pen_err} fi - if [[ $do_chan -eq 1 ]]; then + if [[ ${do_chan} -eq 1 ]]; then echo "calling radmon_err_rpt for chan" - ${radmon_err_rpt} ${prev_bad_chan} ${bad_chan} chan ${qdate} \ - ${PDY}${cyc} ${diag_report} ${chan_err} + ${radmon_err_rpt} "${prev_bad_chan}" "${bad_chan}" chan "${qdate}" \ + "${PDY}${cyc}" ${diag_report} ${chan_err} fi - if [[ $do_cnt -eq 1 ]]; then + if [[ ${do_cnt} -eq 1 ]]; then echo "calling radmon_err_rpt for cnt" - ${radmon_err_rpt} ${prev_low_count} ${low_count} cnt ${qdate} \ - ${PDY}${cyc} ${diag_report} ${count_err} + ${radmon_err_rpt} "${prev_low_count}" "${low_count}" cnt "${qdate}" \ + "${PDY}${cyc}" ${diag_report} ${count_err} fi #------------------------------------------------------------------- @@ -433,7 +433,7 @@ EOF echo DOING ERROR REPORTING - cat << EOF > $report + cat << EOF > ${report} Radiance Monitor warning report Net: ${RADMON_SUFFIX} @@ -444,7 +444,7 @@ EOF if [[ -s ${diag_report} ]]; then echo OUTPUTING DIAG_REPORT - cat ${diag_report} >> $report + cat ${diag_report} >> ${report} fi if [[ -s ${chan_err} ]]; then @@ -460,8 +460,8 @@ EOF EOF - cat ${chan_hdr} >> $report - cat ${chan_err} >> $report + cat ${chan_hdr} >> ${report} + cat ${chan_err} >> ${report} fi @@ -478,8 +478,8 @@ Satellite/Instrument Obs Count Avg Count EOF - cat ${count_hdr} >> $report - cat ${count_err} >> $report + cat ${count_hdr} >> ${report} + cat ${count_err} >> ${report} fi @@ -495,15 +495,15 @@ EOF ============ ======= ====== Cycle Penalty Bound ----- ------- ----- EOF - cat ${pen_hdr} >> $report - cat ${pen_err} >> $report + cat ${pen_hdr} >> ${report} + cat ${pen_err} >> ${report} rm -f ${pen_hdr} rm -f ${pen_err} fi - echo >> $report - cat ${disclaimer} >> $report - echo >> $report + echo >> ${report} + cat ${disclaimer} >> ${report} + echo >> ${report} fi #------------------------------------------------------------------- @@ -511,10 +511,10 @@ EOF # if [[ -s ${report} ]]; then lines=$(wc -l <${report}) - if [[ $lines -gt 2 ]]; then + if [[ ${lines} -gt 2 ]]; then cat ${report} - $NCP ${report} ${TANKverf_rad}/warning.${PDY}${cyc} + ${NCP} ${report} "${TANKverf_rad}/warning.${PDY}${cyc}" fi fi @@ -525,22 +525,22 @@ EOF # copy new bad_pen, bad_chan, and low_count files to $TANKverf_rad # if [[ -s ${bad_chan} ]]; then - mv ${bad_chan} ${TANKverf_rad}/. + mv "${bad_chan}" "${TANKverf_rad}/." fi if [[ -s ${bad_pen} ]]; then - mv ${bad_pen} ${TANKverf_rad}/. + mv "${bad_pen}" "${TANKverf_rad}/." fi if [[ -s ${low_count} ]]; then - mv ${low_count} ${TANKverf_rad}/. + mv "${low_count}" "${TANKverf_rad}/." fi fi for type in ${SATYPE}; do - rm -f stdout.${type} + rm -f "stdout.${type}" done ################################################################################ From 80c92c72f8d280fdd684d145251733212ca4a789 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Tue, 28 Nov 2023 13:37:27 -0500 Subject: [PATCH 15/30] Update PDY parsing in ush/radmon_verf_angle.sh Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- ush/radmon_verf_angle.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index 507fb72ef7..133cec023a 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -118,9 +118,9 @@ else export pgm=${angle_exec} - iyy=$(echo ${PDY} | cut -c1-4) - imm=$(echo ${PDY} | cut -c5-6) - idd=$(echo ${PDY} | cut -c7-8) + iyy="${PDY:0:4}" + imm="${PDY:4:2}" + idd="${PDY:6:2}" ihh=${cyc} ctr=0 From 9a3400ee56441f439031351a8b405c376119d9ae Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Tue, 28 Nov 2023 13:40:24 -0500 Subject: [PATCH 16/30] Update PDY parsing in ush/radmon_verf_bcor.sh Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- ush/radmon_verf_bcor.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index a01238e6ca..5b89e59ed9 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -104,9 +104,9 @@ else export pgm=${bcor_exec} - iyy=$(echo ${PDY} | cut -c1-4) - imm=$(echo ${PDY} | cut -c5-6) - idd=$(echo ${PDY} | cut -c7-8) + iyy="${PDY:0:4}" + imm="${PDY:4:2}" + idd="${PDY:6:2}" ihh=${cyc} ctr=0 From 909f7b4cd3cb393ff6a5a2a9618d64a2531d39fe Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 12:58:14 -0600 Subject: [PATCH 17/30] Compress sourcing of parm file in configs Refs #1925 --- parm/config/gfs/config.verfozn | 3 +-- parm/config/gfs/config.verfrad | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/parm/config/gfs/config.verfozn b/parm/config/gfs/config.verfozn index ad6a927c29..9eea0f25a3 100644 --- a/parm/config/gfs/config.verfozn +++ b/parm/config/gfs/config.verfozn @@ -13,8 +13,7 @@ export PARMmonitor=${PARMgfs}/monitor export SATYPE_FILE=${PARMmonitor}/gdas_oznmon_satype.txt # Source the parm file -export parm_file=${PARMmonitor}/gdas_oznmon.parm -. "${parm_file}" +. "${PARMmonitor}/gdas_oznmon.parm" # Set up validation file if [[ ${VALIDATE_DATA} -eq 1 ]]; then diff --git a/parm/config/gfs/config.verfrad b/parm/config/gfs/config.verfrad index 09c0d2f2da..dd65020180 100644 --- a/parm/config/gfs/config.verfrad +++ b/parm/config/gfs/config.verfrad @@ -10,8 +10,7 @@ export PARMmonitor=${PARMgfs}/monitor export satype_file=${PARMmonitor}/gdas_radmon_satype.txt # Source the parm file -export parm_file=${PARMmonitor}/da_mon.parm -. "${parm_file}" +. "${PARMmonitor}/da_mon.parm" # Other variables export RAD_AREA="glb" From 1dc638d4f593f0de3151bf5c0aae5c562836b32d Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 12:58:38 -0600 Subject: [PATCH 18/30] Address SC2086 and SC2250 shellcheck warnings - In monitor ush scripts Refs #1925 --- ush/ozn_xtrct.sh | 36 +++++++------- ush/radmon_diag_ck.sh | 26 +++++----- ush/radmon_err_rpt.sh | 102 +++++++++++++++++++-------------------- ush/radmon_verf_angle.sh | 54 ++++++++++----------- ush/radmon_verf_bcoef.sh | 54 ++++++++++----------- ush/radmon_verf_bcor.sh | 42 ++++++++-------- 6 files changed, 157 insertions(+), 157 deletions(-) diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index 560f563d25..0ccdf4468c 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" #------------------------------------------------------------------ # ozn_xtrct.sh @@ -58,13 +58,13 @@ nregion=${nregion:-6} DO_DATA_RPT=${DO_DATA_RPT:-0} netcdf_boolean=".false." -if [[ $OZNMON_NETCDF -eq 1 ]]; then +if [[ ${OZNMON_NETCDF} -eq 1 ]]; then netcdf_boolean=".true." fi OZNMON_NEW_HDR=${OZNMON_NEW_HDR:-0} new_hdr="F" -if [[ $OZNMON_NEW_HDR -eq 1 ]]; then +if [[ ${OZNMON_NEW_HDR} -eq 1 ]]; then new_hdr="T" fi @@ -72,19 +72,19 @@ fi # if VALIDATE_DATA then locate and untar base file # validate=".FALSE." -if [[ $VALIDATE_DATA -eq 1 ]]; then - if [[ ! -e $ozn_val_file && ! -h $ozn_val_file ]]; then - echo "WARNING: VALIDATE_DATA set to 1, but unable to locate $ozn_val_file" +if [[ ${VALIDATE_DATA} -eq 1 ]]; then + if [[ ! -e ${ozn_val_file} && ! -h ${ozn_val_file} ]]; then + echo "WARNING: VALIDATE_DATA set to 1, but unable to locate ${ozn_val_file}" echo " Setting VALIDATE_DATA to 0/OFF" VALIDATE_DATA=0 else validate=".TRUE." val_file=$(basename "${ozn_val_file}") - ${NCP} "$ozn_val_file" "$val_file" - tar -xvf "$val_file" + ${NCP} "${ozn_val_file}" "${val_file}" + tar -xvf "${val_file}" fi fi -echo "VALIDATE_DATA, validate = $VALIDATE_DATA, $validate " +echo "VALIDATE_DATA, validate = ${VALIDATE_DATA}, ${validate} " @@ -149,9 +149,9 @@ else # for ptype in ${ozn_ptype}; do - iyy=$(echo "${PDY}" | cut -c1-4) - imm=$(echo "${PDY}" | cut -c5-6) - idd=$(echo "${PDY}" | cut -c7-8) + iyy="${PDY:0:4}" + imm="${PDY:4:2}" + idd="${PDY:6:2}" ihh=${cyc} for type in ${avail_satype}; do @@ -195,10 +195,10 @@ EOF if [[ ! -d ${TANKverf_ozn}/time ]]; then mkdir -p "${TANKverf_ozn}/time" fi - $NCP "${type}.${ptype}.ctl "${TANKverf_ozn}/time/" - $NCP "${type}.${ptype}.${PDY}${cyc}.ieee_d" "${TANKverf_ozn}/time/" + ${NCP} "${type}.${ptype}.ctl" "${TANKverf_ozn}/time/" + ${NCP} "${type}.${ptype}.${PDY}${cyc}.ieee_d" "${TANKverf_ozn}/time/" - $NCP bad* "${TANKverf_ozn}/time/" + ${NCP} bad* "${TANKverf_ozn}/time/" rm -f input @@ -226,10 +226,10 @@ EOF if [[ ! -d ${TANKverf_ozn}/horiz ]]; then mkdir -p "${TANKverf_ozn}/horiz" fi - $NCP "${type}.${ptype}.ctl" "${TANKverf_ozn}/horiz/" + ${NCP} "${type}.${ptype}.ctl" "${TANKverf_ozn}/horiz/" - $COMPRESS "${type}.${ptype}.${PDY}${cyc}.ieee_d" - $NCP "${type}.${ptype}.${PDY}${cyc}.ieee_d.${Z}" "${TANKverf_ozn}/horiz/" + ${COMPRESS} "${type}.${ptype}.${PDY}${cyc}.ieee_d" + ${NCP} "${type}.${ptype}.${PDY}${cyc}.ieee_d.${Z}" "${TANKverf_ozn}/horiz/" echo "finished processing ptype, type: ${ptype}, ${type}" diff --git a/ush/radmon_diag_ck.sh b/ush/radmon_diag_ck.sh index 4045ddb2d5..3a9d3618e7 100755 --- a/ush/radmon_diag_ck.sh +++ b/ush/radmon_diag_ck.sh @@ -27,7 +27,7 @@ echo "--> radmon_diag_ck.sh" # Process input arguments # nargs=$# - if [[ $nargs -ne 6 ]]; then + if [[ ${nargs} -ne 6 ]]; then usage exit 1 fi @@ -35,9 +35,9 @@ echo "--> radmon_diag_ck.sh" while [[ $# -ge 1 ]] do key="$1" - echo $key + echo "${key}" - case $key in + case ${key} in -r|--rad) radstat_file="$2" shift # past argument @@ -52,7 +52,7 @@ echo "--> radmon_diag_ck.sh" ;; *) #unspecified key - echo " unsupported key = $key" + echo " unsupported key = ${key}" ;; esac @@ -71,7 +71,7 @@ echo "--> radmon_diag_ck.sh" #--------------------------------------------- # get list of diag files in the radstat file # - radstat_contents=`tar -tf ${radstat_file} | grep '_ges' | + radstat_contents=`tar -tf "${radstat_file}" | grep '_ges' | gawk -F"diag_" '{print $2}' | gawk -F"_ges" '{print $1}'` @@ -79,15 +79,15 @@ echo "--> radmon_diag_ck.sh" #--------------------------------------------- # load contents of satype_file into an array # - satype_contents=`cat ${satype_file}` + satype_contents=`cat "${satype_file}"` #------------------------------------------------- # compare $satype_contents and $radstat_contents # report anything missing # - for sat in $satype_contents; do - test=`echo $radstat_contents | grep $sat` + for sat in ${satype_contents}; do + test=`echo "${radstat_contents}" | grep "${sat}"` if [[ ${#test} -le 0 ]]; then missing_diag="${missing_diag} ${sat}" @@ -117,10 +117,10 @@ echo "--> radmon_diag_ck.sh" # TODO Rewrite these array parsing commands to avoid using Bash's sloppy word splitting # File sizes contain only digits and immediately precede the date # shellcheck disable=SC2207 - sizes=($(tar -vtf ${radstat_file} --wildcards '*_ges*' | grep -P -o '(\d)+(?= \d{4}-\d{2}-\d{2})')) + sizes=($(tar -vtf "${radstat_file}" --wildcards '*_ges*' | grep -P -o '(\d)+(?= \d{4}-\d{2}-\d{2})')) # Filenames are the last group of non-whitespace characters # shellcheck disable=SC2207 - filenames=($(tar -vtf ${radstat_file} --wildcards '*_ges*' | grep -P -o '\S+$')) + filenames=($(tar -vtf "${radstat_file}" --wildcards '*_ges*' | grep -P -o '\S+$')) # shellcheck disable= @@ -144,7 +144,7 @@ echo "--> radmon_diag_ck.sh" zero_len_diag="${zero_len_diag} ${sat}" fi - rm -f ${uz_file_name} + rm -f "${uz_file_name}" fi done @@ -159,13 +159,13 @@ echo "--> radmon_diag_ck.sh" # if [[ ${#zero_len_diag} -gt 0 ]]; then for zld in ${zero_len_diag}; do - echo " Zero Length diagnostic file: $zld" >> $output_file + echo " Zero Length diagnostic file: ${zld}" >> "${output_file}" done fi if [[ ${#missing_diag} -gt 0 ]]; then for md in ${missing_diag}; do - echo " Missing diagnostic file : $md" >> $output_file + echo " Missing diagnostic file : ${md}" >> "${output_file}" done fi diff --git a/ush/radmon_err_rpt.sh b/ush/radmon_err_rpt.sh index 8561563d48..39085b1de3 100755 --- a/ush/radmon_err_rpt.sh +++ b/ush/radmon_err_rpt.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -63,12 +63,12 @@ err=0 RADMON_SUFFIX=${RADMON_SUFFIX} have_diag_rpt=0 -if [[ -s $diag_rpt ]]; then +if [[ -s ${diag_rpt} ]]; then have_diag_rpt=1 else err=1 fi -echo "have_diag_rpt = $have_diag_rpt" +echo "have_diag_rpt = ${have_diag_rpt}" #----------------------------------------------------------------------------- # read each line in the $file1 @@ -76,15 +76,15 @@ echo "have_diag_rpt = $have_diag_rpt" # if same combination is in both files, add the values to the output file # { while read myline; do - echo "myline = $myline" + echo "myline = ${myline}" bound="" - echo $myline - satname=$(echo $myline | gawk '{print $1}') - channel=$(echo $myline | gawk '{print $3}') - region=$(echo $myline | gawk '{print $5}') - value1=$(echo $myline | gawk '{print $7}') - bound=$(echo $myline | gawk '{print $9}') + echo "${myline}" + satname=$(echo "${myline}" | gawk '{print $1}') + channel=$(echo "${myline}" | gawk '{print $3}') + region=$(echo "${myline}" | gawk '{print $5}') + value1=$(echo "${myline}" | gawk '{print $7}') + bound=$(echo "${myline}" | gawk '{print $9}') # # Check findings against diag_report. If the satellite/instrument is on the @@ -96,40 +96,40 @@ echo "have_diag_rpt = $have_diag_rpt" diag_match="" diag_match_len=0 - if [[ $have_diag_rpt == 1 ]]; then - diag_match=$(gawk "/$satname/" $diag_rpt) + if [[ ${have_diag_rpt} == 1 ]]; then + diag_match=$(gawk "/${satname}/" "${diag_rpt}") diag_match_len=$(echo ${#diag_match}) fi - if [[ $diag_match_len == 0 ]]; then + if [[ ${diag_match_len} == 0 ]]; then - if [[ $type == "chan" ]]; then - echo "looking for match for $satname and $channel" + if [[ ${type} == "chan" ]]; then + echo "looking for match for ${satname} and ${channel}" { while read myline2; do - satname2=$(echo $myline2 | gawk '{print $1}') - channel2=$(echo $myline2 | gawk '{print $3}') + satname2=$(echo "${myline2}" | gawk '{print $1}') + channel2=$(echo "${myline2}" | gawk '{print $3}') - if [[ $satname == $satname2 && $channel == $channel2 ]]; then - match="$satname channel= $channel" - echo "match from gawk = $match" + if [[ ${satname} == ${satname2} && ${channel} == ${channel2} ]]; then + match="${satname} channel= ${channel}" + echo "match from gawk = ${match}" break; else match="" fi - done } < $file2 + done } < "${file2}" else - match=$(gawk "/$satname/ && /channel= $channel / && /region= $region /" $file2) - echo match = $match + match=$(gawk "/${satname}/ && /channel= ${channel} / && /region= ${region} /" "${file2}") + echo match = "${match}" match_len=$(echo ${#match}) - if [[ $match_len > 0 ]]; then - channel2=$(echo $match | gawk '{print $3}') + if [[ ${match_len} > 0 ]]; then + channel2=$(echo "${match}" | gawk '{print $3}') - if [[ $channel2 != $channel ]]; then + if [[ ${channel2} != ${channel} ]]; then match="" fi fi @@ -137,54 +137,54 @@ echo "have_diag_rpt = $have_diag_rpt" fi match_len=$(echo ${#match}) - if [[ $match_len > 0 ]]; then + if [[ ${match_len} > 0 ]]; then - value2=$(echo $match | gawk '{print $7}') - bound2=$(echo $match | gawk '{print $9}') + value2=$(echo "${match}" | gawk '{print $7}') + bound2=$(echo "${match}" | gawk '{print $9}') - if [[ $type == "chan" ]]; then - tmpa=" $satname channel= $channel" + if [[ ${type} == "chan" ]]; then + tmpa=" ${satname} channel= ${channel}" tmpb="" - elif [[ $type == "pen" ]]; then - tmpa="$satname channel= $channel region= $region" - tmpb="$cycle1 $value1 $bound" + elif [[ ${type} == "pen" ]]; then + tmpa="${satname} channel= ${channel} region= ${region}" + tmpb="${cycle1} ${value1} ${bound}" - elif [[ $type == "cnt" ]]; then - tmpa="$satname channel= $channel region= $region" - tmpb="$cycle1 $value1 $bound" + elif [[ ${type} == "cnt" ]]; then + tmpa="${satname} channel= ${channel} region= ${region}" + tmpb="${cycle1} ${value1} ${bound}" else - tmpa="$satname channel= $channel region= $region" - tmpb="$cycle1: $type= $value1" + tmpa="${satname} channel= ${channel} region= ${region}" + tmpb="${cycle1}: ${type}= ${value1}" fi - line1="$tmpa $tmpb" - echo "$line1" >> $outfile + line1="${tmpa} ${tmpb}" + echo "${line1}" >> "${outfile}" - if [[ $type != "chan" ]]; then - tmpc=$(echo $tmpa |sed 's/[a-z]/ /g' | sed 's/[0-9]/ /g' | sed 's/=/ /g' | sed 's/_/ /g' | sed 's/-/ /g') + if [[ ${type} != "chan" ]]; then + tmpc=$(echo "${tmpa}" |sed 's/[a-z]/ /g' | sed 's/[0-9]/ /g' | sed 's/=/ /g' | sed 's/_/ /g' | sed 's/-/ /g') - if [[ $type == "pen" || $type == "cnt" ]]; then - line2=" $tmpc $cycle2 $value2 $bound2" + if [[ ${type} == "pen" || ${type} == "cnt" ]]; then + line2=" ${tmpc} ${cycle2} ${value2} ${bound2}" else - line2=" $tmpc $cycle2: $type= $value2" + line2=" ${tmpc} ${cycle2}: ${type}= ${value2}" fi - echo "$line2" >> $outfile + echo "${line2}" >> "${outfile}" fi #----------------------------------------- # add hyperlink to warning entry # line3=" http://www.emc.ncep.noaa.gov/gmb/gdas/radiance/es_rad/${RADMON_SUFFIX}/index.html?sat=${satname}®ion=${region}&channel=${channel}&stat=${type}" - if [[ $channel -gt 0 ]]; then - echo "$line3" >> $outfile - echo "" >> $outfile + if [[ ${channel} -gt 0 ]]; then + echo "${line3}" >> "${outfile}" + echo "" >> "${outfile}" fi fi fi -done } < $file1 +done } < "${file1}" ################################################################################ diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index 133cec023a..a8d8da4637 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -72,19 +72,19 @@ REGIONAL_RR=${REGIONAL_RR:-0} # rapid refresh model flag rgnHH=${rgnHH:-} rgnTM=${rgnTM:-} -echo " REGIONAL_RR, rgnHH, rgnTM = $REGIONAL_RR, $rgnHH, $rgnTM" +echo " REGIONAL_RR, rgnHH, rgnTM = ${REGIONAL_RR}, ${rgnHH}, ${rgnTM}" netcdf_boolean=".false." -if [[ $RADMON_NETCDF -eq 1 ]]; then +if [[ ${RADMON_NETCDF} -eq 1 ]]; then netcdf_boolean=".true." fi -echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, $netcdf_boolean" +echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, ${netcdf_boolean}" which prep_step which startmsg # File names export pgmout=${pgmout:-${jlogfile}} -touch $pgmout +touch "${pgmout}" # Other variables SATYPE=${SATYPE:-} @@ -93,7 +93,7 @@ LITTLE_ENDIAN=${LITTLE_ENDIAN:-0} USE_ANL=${USE_ANL:-0} -if [[ $USE_ANL -eq 1 ]]; then +if [[ ${USE_ANL} -eq 1 ]]; then gesanl="ges anl" else gesanl="ges" @@ -107,8 +107,8 @@ scaninfo=scaninfo.txt #-------------------------------------------------------------------- # Copy extraction program and supporting files to working directory -$NCP ${EXECgfs}/${angle_exec} ./ -$NCP $shared_scaninfo ./${scaninfo} +${NCP} "${EXECgfs}/${angle_exec}" ./ +${NCP} "${shared_scaninfo}" ./${scaninfo} if [[ ! -s ./${angle_exec} || ! -s ./${scaninfo} ]]; then err=2 @@ -136,13 +136,13 @@ else for dtype in ${gesanl}; do - echo "pgm = $pgm" - echo "pgmout = $pgmout" + echo "pgm = ${pgm}" + echo "pgmout = ${pgmout}" prep_step - ctr=$(expr $ctr + 1) + ctr=$(expr ${ctr} + 1) - if [[ $dtype == "anl" ]]; then + if [[ ${dtype} == "anl" ]]; then data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl angl_ctl=angle.${ctl_file} @@ -153,7 +153,7 @@ else fi angl_file="" - if [[ $REGIONAL_RR -eq 1 ]]; then + if [[ ${REGIONAL_RR} -eq 1 ]]; then angl_file=${rgnHH}.${data_file}.${rgnTM} fi @@ -180,18 +180,18 @@ cat << EOF > input EOF startmsg - ./${angle_exec} < input >> ${pgmout} 2>>errfile + ./${angle_exec} < input >> "${pgmout}" 2>>errfile export err=$?; err_chk - if [[ $err -ne 0 ]]; then - fail=$(expr $fail + 1) + if [[ ${err} -ne 0 ]]; then + fail=$(expr ${fail} + 1) fi if [[ -s ${angl_file} ]]; then - ${COMPRESS} -f ${angl_file} + ${COMPRESS} -f "${angl_file}" fi if [[ -s ${angl_ctl} ]]; then - ${COMPRESS} -f ${angl_ctl} + ${COMPRESS} -f "${angl_ctl}" fi @@ -200,24 +200,24 @@ EOF done # for type in ${SATYPE} loop - ${USHgfs}/rstprod.sh + "${USHgfs}"/rstprod.sh tar_file=radmon_angle.tar if compgen -G "angle*.ieee_d*" > /dev/null || compgen -G "angle*.ctl*" > /dev/null; then - tar -cf $tar_file angle*.ieee_d* angle*.ctl* + tar -cf ${tar_file} angle*.ieee_d* angle*.ctl* ${COMPRESS} ${tar_file} - mv $tar_file.${Z} ${TANKverf_rad}/. + mv "${tar_file}.${Z}" "${TANKverf_rad}/." - if [[ $RAD_AREA = "rgn" ]]; then + if [[ ${RAD_AREA} = "rgn" ]]; then cwd=$(pwd) - cd ${TANKverf_rad} - tar -xf ${tar_file}.${Z} - rm ${tar_file}.${Z} - cd ${cwd} + cd "${TANKverf_rad}" + tar -xf "${tar_file}.${Z}" + rm "${tar_file}.${Z}" + cd "${cwd}" fi fi - if [[ $ctr -gt 0 && $fail -eq $ctr || $fail -gt $ctr ]]; then + if [[ ${ctr} -gt 0 && ${fail} -eq ${ctr} || ${fail} -gt ${ctr} ]]; then err=3 fi fi diff --git a/ush/radmon_verf_bcoef.sh b/ush/radmon_verf_bcoef.sh index 4485f81786..6e8c5fb5d7 100755 --- a/ush/radmon_verf_bcoef.sh +++ b/ush/radmon_verf_bcoef.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -63,14 +63,14 @@ source "$HOMEgfs/ush/preamble.sh" #################################################################### netcdf_boolean=".false." -if [[ $RADMON_NETCDF -eq 1 ]]; then +if [[ ${RADMON_NETCDF} -eq 1 ]]; then netcdf_boolean=".true." fi -echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, $netcdf_boolean" +echo " RADMON_NETCDF, netcdf_boolean = ${RADMON_NETCDF}, ${netcdf_boolean}" # File names pgmout=${pgmout:-${jlogfile}} -touch $pgmout +touch "${pgmout}" # Other variables RAD_AREA=${RAD_AREA:-glb} @@ -85,7 +85,7 @@ USE_ANL=${USE_ANL:-0} err=0 bcoef_exec=radmon_bcoef.x -if [[ $USE_ANL -eq 1 ]]; then +if [[ ${USE_ANL} -eq 1 ]]; then gesanl="ges anl" else gesanl="ges" @@ -94,8 +94,8 @@ fi #-------------------------------------------------------------------- # Copy extraction program and supporting files to working directory -$NCP $EXECgfs/${bcoef_exec} ./${bcoef_exec} -$NCP ${biascr} ./biascr.txt +${NCP} "${EXECgfs}/${bcoef_exec}" ./${bcoef_exec} +${NCP} "${biascr}" ./biascr.txt if [[ ! -s ./${bcoef_exec} || ! -s ./biascr.txt ]]; then err=4 @@ -107,9 +107,9 @@ else export pgm=${bcoef_exec} - iyy=$(echo ${PDY} | cut -c1-4) - imm=$(echo ${PDY} | cut -c5-6) - idd=$(echo ${PDY} | cut -c7-8) + iyy="${PDY:0:4}" + imm="${PDY:4:2}" + idd="${PDY:6:2}" ihh=${cyc} ctr=0 @@ -129,9 +129,9 @@ else prep_step - ctr=$(expr $ctr + 1) + ctr=$(expr ${ctr} + 1) - if [[ $dtype == "anl" ]]; then + if [[ ${dtype} == "anl" ]]; then data_file=${type}_anl.${PDY}${cyc}.ieee_d ctl_file=${type}_anl.ctl bcoef_ctl=bcoef.${ctl_file} @@ -141,7 +141,7 @@ else bcoef_ctl=bcoef.${ctl_file} fi - if [[ $REGIONAL_RR -eq 1 ]]; then + if [[ ${REGIONAL_RR} -eq 1 ]]; then bcoef_file=${rgnHH}.bcoef.${data_file}.${rgnTM} else bcoef_file=bcoef.${data_file} @@ -169,10 +169,10 @@ cat << EOF > input / EOF startmsg - ./${bcoef_exec} < input >>${pgmout} 2>>errfile + ./${bcoef_exec} < input >>"${pgmout}" 2>>errfile export err=$?; err_chk - if [[ $err -ne 0 ]]; then - fail=$(expr $fail + 1) + if [[ ${err} -ne 0 ]]; then + fail=$(expr ${fail} + 1) fi @@ -181,11 +181,11 @@ EOF # if [[ -s ${bcoef_file} ]]; then - ${COMPRESS} ${bcoef_file} + ${COMPRESS} "${bcoef_file}" fi if [[ -s ${bcoef_ctl} ]]; then - ${COMPRESS} ${bcoef_ctl} + ${COMPRESS} "${bcoef_ctl}" fi @@ -193,24 +193,24 @@ EOF done # type in $SATYPE loop - ${USHgfs}/rstprod.sh + "${USHgfs}/rstprod.sh" if compgen -G "bcoef*.ieee_d*" > /dev/null || compgen -G "bcoef*.ctl*" > /dev/null; then tar_file=radmon_bcoef.tar - tar -cf $tar_file bcoef*.ieee_d* bcoef*.ctl* + tar -cf ${tar_file} bcoef*.ieee_d* bcoef*.ctl* ${COMPRESS} ${tar_file} - mv $tar_file.${Z} ${TANKverf_rad} + mv "${tar_file}.${Z}" "${TANKverf_rad}" - if [[ $RAD_AREA = "rgn" ]]; then + if [[ ${RAD_AREA} = "rgn" ]]; then cwd=$(pwd) - cd ${TANKverf_rad} - tar -xf ${tar_file}.${Z} - rm ${tar_file}.${Z} - cd ${cwd} + cd "${TANKverf_rad}" + tar -xf "${tar_file}.${Z}" + rm "${tar_file}.${Z}" + cd "${cwd}" fi fi - if [[ $ctr -gt 0 && $fail -eq $ctr || $fail -gt $ctr ]]; then + if [[ ${ctr} -gt 0 && ${fail} -eq ${ctr} || ${fail} -gt ${ctr} ]]; then err=5 fi fi diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index 5b89e59ed9..73042755a3 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -source "$HOMEgfs/ush/preamble.sh" +source "${HOMEgfs}/ush/preamble.sh" ################################################################################ #### UNIX Script Documentation Block @@ -66,7 +66,7 @@ source "$HOMEgfs/ush/preamble.sh" # File names pgmout=${pgmout:-${jlogfile}} -touch $pgmout +touch "${pgmout}" # Other variables RAD_AREA=${RAD_AREA:-glb} @@ -78,11 +78,11 @@ bcor_exec=radmon_bcor.x err=0 netcdf_boolean=".false." -if [[ $RADMON_NETCDF -eq 1 ]]; then +if [[ ${RADMON_NETCDF} -eq 1 ]]; then netcdf_boolean=".true." fi -if [[ $USE_ANL -eq 1 ]]; then +if [[ ${USE_ANL} -eq 1 ]]; then gesanl="ges anl" else gesanl="ges" @@ -92,7 +92,7 @@ fi #-------------------------------------------------------------------- # Copy extraction program to working directory -$NCP ${EXECgfs}/${bcor_exec} ./${bcor_exec} +${NCP} "${EXECgfs}/${bcor_exec}" ./${bcor_exec} if [[ ! -s ./${bcor_exec} ]]; then err=6 @@ -119,9 +119,9 @@ else prep_step - ctr=$(expr $ctr + 1) + ctr=$(expr ${ctr} + 1) - if [[ $dtype == "anl" ]]; then + if [[ ${dtype} == "anl" ]]; then data_file=${type}_anl.${PDY}${cyc}.ieee_d bcor_file=bcor.${data_file} ctl_file=${type}_anl.ctl @@ -144,7 +144,7 @@ else # Check for 0 length input file here and avoid running # the executable if $input_file doesn't exist or is 0 bytes # - if [[ -s $input_file ]]; then + if [[ -s ${input_file} ]]; then nchanl=-999 cat << EOF > input @@ -166,10 +166,10 @@ cat << EOF > input EOF startmsg - ./${bcor_exec} < input >> ${pgmout} 2>>errfile + ./${bcor_exec} < input >> "${pgmout}" 2>>errfile export err=$?; err_chk if [[ $? -ne 0 ]]; then - fail=$(expr $fail + 1) + fail=$(expr ${fail} + 1) fi @@ -178,11 +178,11 @@ EOF # if [[ -s ${bcor_file} ]]; then - ${COMPRESS} ${bcor_file} + ${COMPRESS} "${bcor_file}" fi if [[ -s ${bcor_ctl} ]]; then - ${COMPRESS} ${bcor_ctl} + ${COMPRESS} "${bcor_ctl}" fi fi @@ -190,24 +190,24 @@ EOF done # type in $SATYPE loop - ${USHgfs}/rstprod.sh + "${USHgfs}/rstprod.sh" tar_file=radmon_bcor.tar if compgen -G "bcor*.ieee_d*" > /dev/null || compgen -G "bcor*.ctl*" > /dev/null; then - tar -cf $tar_file bcor*.ieee_d* bcor*.ctl* + tar -cf ${tar_file} bcor*.ieee_d* bcor*.ctl* ${COMPRESS} ${tar_file} - mv $tar_file.${Z} ${TANKverf_rad}/. + mv "${tar_file}.${Z}" "${TANKverf_rad}/." - if [[ $RAD_AREA = "rgn" ]]; then + if [[ ${RAD_AREA} = "rgn" ]]; then cwd=$(pwd) - cd ${TANKverf_rad} - tar -xf ${tar_file}.${Z} - rm ${tar_file}.${Z} - cd ${cwd} + cd "${TANKverf_rad}" + tar -xf "${tar_file}.${Z}" + rm "${tar_file}.${Z}" + cd "${cwd}" fi fi - if [[ $ctr -gt 0 && $fail -eq $ctr || $fail -gt $ctr ]]; then + if [[ ${ctr} -gt 0 && ${fail} -eq ${ctr} || ${fail} -gt ${ctr} ]]; then err=7 fi fi From 8f1f6c6a8bebcb3772b08052fb0e6989002b0cb3 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 13:25:55 -0600 Subject: [PATCH 19/30] Address SC2086 shellcheck warnings in exgdas_atmos_verfrad.sh Refs #1925 --- scripts/exgdas_atmos_verfrad.sh | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index a5e4fda9cb..ca497de1e1 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -29,11 +29,11 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # Untar radstat file. #------------------------------------------------------------------ - $NCP $biascr ./biascr.${PDY}${cyc} - $NCP $radstat ./radstat.${PDY}${cyc} + $NCP "$biascr" "./biascr.${PDY}${cyc}" + $NCP "$radstat" "./radstat.${PDY}${cyc}" - tar -xvf radstat.${PDY}${cyc} - rm radstat.${PDY}${cyc} + tar -xvf "radstat.${PDY}${cyc}" + rm "radstat.${PDY}${cyc}" #------------------------------------------------------------------ # SATYPE is the list of expected satellite/instrument sources @@ -45,10 +45,10 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then radstat_satype=$(ls d*ges* | awk -F_ '{ print $2 "_" $3 }') if [[ "$VERBOSE" = "YES" ]]; then - echo $radstat_satype + echo "$radstat_satype" fi - echo satype_file = $satype_file + echo satype_file = "$satype_file" #------------------------------------------------------------------ # Get previous cycle's date, and look for the satype_file. Using @@ -61,8 +61,8 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then use_tankdir=${TANKverf_rad} fi - echo satype_file = $satype_file - export SATYPE=$(cat ${satype_file}) + echo satype_file = "$satype_file" + export SATYPE=$(cat "${satype_file}") #------------------------------------------------------------- @@ -73,7 +73,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then satype_changes=0 new_satype=$SATYPE for type in ${radstat_satype}; do - test=$(echo $SATYPE | grep $type | wc -l) + test=$(echo "$SATYPE" | grep "$type" | wc -l) if [[ $test -eq 0 ]]; then if [[ "$VERBOSE" = "YES" ]]; then @@ -97,16 +97,16 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then fi if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_ges.${PDY}${cyc}*.${Z} ${type}.${Z} - ${UNCOMPRESS} ./${type}.${Z} + mv "diag_${type}_ges.${PDY}${cyc}*.${Z}" "${type}.${Z}" + ${UNCOMPRESS} "./${type}.${Z}" else echo "WARNING: diag_${type}_ges.${PDY}${cyc}*.${Z} not available, skipping" fi if [[ $USE_ANL -eq 1 ]]; then if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_anl.${PDY}${cyc}*.${Z} ${type}_anl.${Z} - ${UNCOMPRESS} ./${type}_anl.${Z} + mv "diag_${type}_anl.${PDY}${cyc}*.${Z}" "${type}_anl.${Z}" + ${UNCOMPRESS} "./${type}_anl.${Z}" else echo "WARNING: diag_${type}_anl.${PDY}${cyc}*.${Z} not available, skipping" fi @@ -119,16 +119,16 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then #------------------------------------------------------------------ # Run the child scripts. #------------------------------------------------------------------ - ${USHgfs}/radmon_verf_angle.sh + "${USHgfs}/radmon_verf_angle.sh" rc_angle=$? - ${USHgfs}/radmon_verf_bcoef.sh + "${USHgfs}/radmon_verf_bcoef.sh" rc_bcoef=$? - ${USHgfs}/radmon_verf_bcor.sh + "${USHgfs}/radmon_verf_bcor.sh" rc_bcor=$? - ${USHgfs}/radmon_verf_time.sh + "${USHgfs}/radmon_verf_time.sh" rc_time=$? #-------------------------------------- @@ -166,7 +166,7 @@ export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} rlist="saphir" for rtype in $rlist; do if compgen -G "$TANKverf_rad/*${rtype}*" > /dev/null; then - ${CHGRP_CMD} "${TANKverf_rad}"/*${rtype}* + ${CHGRP_CMD} "${TANKverf_rad}/*${rtype}*" fi done From a04fbd290b6d599f9bc9cfdb2b486c75ce0ff7f2 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 13:33:29 -0600 Subject: [PATCH 20/30] Cleanup ozn_xtrct.sh a bit Refs #1925 --- ush/ozn_xtrct.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index 0ccdf4468c..f9a6e46846 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -195,10 +195,10 @@ EOF if [[ ! -d ${TANKverf_ozn}/time ]]; then mkdir -p "${TANKverf_ozn}/time" fi - ${NCP} "${type}.${ptype}.ctl" "${TANKverf_ozn}/time/" - ${NCP} "${type}.${ptype}.${PDY}${cyc}.ieee_d" "${TANKverf_ozn}/time/" + ${NCP} "${type}.${ptype}.ctl" "${TANKverf_ozn}/time/" + ${NCP} "${type}.${ptype}.${PDY}${cyc}.ieee_d" "${TANKverf_ozn}/time/" - ${NCP} bad* "${TANKverf_ozn}/time/" + ${NCP} bad* "${TANKverf_ozn}/time/" rm -f input From 1ae1bce1cdaf012f5ad30935901883e9bc9bbed3 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 13:38:46 -0600 Subject: [PATCH 21/30] Remove invocation of script that no longer exists The ush/clean_tankdir.sh script no longer exists in either global-workflow or GSI-Monitor. Remove it's invocation. Refs #1925 --- ush/ozn_xtrct.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ush/ozn_xtrct.sh b/ush/ozn_xtrct.sh index f9a6e46846..57ff87be5f 100755 --- a/ush/ozn_xtrct.sh +++ b/ush/ozn_xtrct.sh @@ -251,11 +251,4 @@ EOF ${NCP} "stdout.time.tar.${Z}" "${TANKverf_ozn}/time/" fi -#------------------------------------------------------- -# Conditionally remove data files older than 40 days -# -if [[ ${CLEAN_TANKDIR:-0} -eq 1 ]]; then - "${HOMEgfs}/ush/clean_tankdir.sh" glb 40 -fi - exit ${iret} From ba6b2f9d6208b3aa2e17836129d32fbbc18244da Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 13:42:35 -0600 Subject: [PATCH 22/30] Address SC2086 in exglobal_atmos_vminmon.sh Refs #1925 --- scripts/exglobal_atmos_vminmon.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exglobal_atmos_vminmon.sh b/scripts/exglobal_atmos_vminmon.sh index 1d0ffedb37..a4453dcf1a 100755 --- a/scripts/exglobal_atmos_vminmon.sh +++ b/scripts/exglobal_atmos_vminmon.sh @@ -72,5 +72,5 @@ elif [[ ${rc_reduct} -ne 0 ]]; then err=${rc_reduct} fi -exit ${err} +exit "${err}" From 2da1a9d2a3d13938ab7a9bc13daf70c326c8a451 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 28 Nov 2023 20:15:03 +0000 Subject: [PATCH 23/30] A few corrections to radmon scripts Refs #1925 --- scripts/exgdas_atmos_verfrad.sh | 4 ++-- ush/radmon_verf_angle.sh | 2 +- ush/radmon_verf_time.sh | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index ca497de1e1..96039307a7 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -97,7 +97,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then fi if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv "diag_${type}_ges.${PDY}${cyc}*.${Z}" "${type}.${Z}" + mv diag_${type}_ges.${PDY}${cyc}*.${Z} "${type}.${Z}" ${UNCOMPRESS} "./${type}.${Z}" else echo "WARNING: diag_${type}_ges.${PDY}${cyc}*.${Z} not available, skipping" @@ -105,7 +105,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then if [[ $USE_ANL -eq 1 ]]; then if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv "diag_${type}_anl.${PDY}${cyc}*.${Z}" "${type}_anl.${Z}" + mv diag_${type}_anl.${PDY}${cyc}*.${Z} "${type}_anl.${Z}" ${UNCOMPRESS} "./${type}_anl.${Z}" else echo "WARNING: diag_${type}_anl.${PDY}${cyc}*.${Z} not available, skipping" diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index a8d8da4637..78ea371c9e 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -200,7 +200,7 @@ EOF done # for type in ${SATYPE} loop - "${USHgfs}"/rstprod.sh + "${USHgfs}/rstprod.sh" tar_file=radmon_angle.tar if compgen -G "angle*.ieee_d*" > /dev/null || compgen -G "angle*.ctl*" > /dev/null; then diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 9e3f51e2e6..0a86d05c17 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -131,11 +131,10 @@ if [[ ! -s ./${time_exec} ]]; then err=8 fi -iyy=$(echo "${PDY}" | cut -c1-4) -imm=$(echo "${PDY}" | cut -c5-6) -idd=$(echo "${PDY}" | cut -c7-8) +iyy="${PDY:0:4}" +imm="${PDY:4:2}" +idd="${PDY:6:2}" ihh=${cyc} -CYCLE=${cyc} local_base="local_base" if [[ ${DO_DATA_RPT} -eq 1 ]]; then From 0787ee9fdf0e1d119dbf266aa7331a944bdbc547 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Wed, 29 Nov 2023 08:27:41 -0500 Subject: [PATCH 24/30] Add {} into scripts/exgdas_atmos_verfrad.sh Refs #1925 Co-authored-by: Rahul Mahajan --- scripts/exgdas_atmos_verfrad.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index 96039307a7..0a8cff1dbc 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -29,8 +29,8 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # Untar radstat file. #------------------------------------------------------------------ - $NCP "$biascr" "./biascr.${PDY}${cyc}" - $NCP "$radstat" "./radstat.${PDY}${cyc}" + $NCP "${biascr}" "./biascr.${PDY}${cyc}" + $NCP "${radstat}" "./radstat.${PDY}${cyc}" tar -xvf "radstat.${PDY}${cyc}" rm "radstat.${PDY}${cyc}" From 9600f0ab5a76bf198ef72973c34491e3fbaee3fe Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Wed, 29 Nov 2023 08:28:26 -0500 Subject: [PATCH 25/30] Add shellcheck disable to jobs/JGDAS_ATMOS_VERFOZN Refs #1925 Co-authored-by: Rahul Mahajan --- jobs/JGDAS_ATMOS_VERFOZN | 1 + 1 file changed, 1 insertion(+) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index c59c43fa5c..65479a9fec 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -9,6 +9,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "verfozn" -c "base verfozn" ############################################# # determine PDY and cyc for previous cycle ############################################# +# shellcheck disable=SC2153 GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} From d280a02d7ea96027262a423080a89997aeb77f1e Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 29 Nov 2023 13:31:37 +0000 Subject: [PATCH 26/30] Add shellcheck disable for SC2153 for monitor jobs Disable shellcheck SC2153 for PDY in GDATE Refs #1925 --- jobs/JGDAS_ATMOS_VERFRAD | 1 + jobs/JGLOBAL_ATMOS_VMINMON | 1 + 2 files changed, 2 insertions(+) diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index a60dc7c47a..d440f91b6e 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -9,6 +9,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" ############################################# # determine PDY and cyc for previous cycle ############################################# +# shellcheck disable=SC2153 GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} diff --git a/jobs/JGLOBAL_ATMOS_VMINMON b/jobs/JGLOBAL_ATMOS_VMINMON index 27905b139e..dbd76aed5b 100755 --- a/jobs/JGLOBAL_ATMOS_VMINMON +++ b/jobs/JGLOBAL_ATMOS_VMINMON @@ -9,6 +9,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" ############################################# # Determine PDY and cyc for previous cycle ############################################# +# shellcheck disable=SC2153 GDATE=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") export gPDY=${GDATE:0:8} export gcyc=${GDATE:8:2} From c5cef1739b5e2452ef0fbc1c73158645c650f65b Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Fri, 1 Dec 2023 09:03:30 -0500 Subject: [PATCH 27/30] Update qdate in ush/radmon_verf_time.sh Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- ush/radmon_verf_time.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 0a86d05c17..786262617d 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -336,7 +336,7 @@ EOF low_count=low_count.${PDY}${cyc} qdate=$(date --utc +%Y%m%d%H -d "${PDY} ${cyc} - ${assim_freq} hours") - pday=$(echo "${qdate}" | cut -c1-8) + pday="${qdate:0:8}" prev_bad_pen=bad_pen.${qdate} prev_bad_chan=bad_chan.${qdate} From 3187b300c4125c64b23a8512cc824764fdccd5c7 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Fri, 1 Dec 2023 09:12:40 -0500 Subject: [PATCH 28/30] Apply suggestions from code review Refs #1925 Co-authored-by: Walter Kolczynski - NOAA --- scripts/exgdas_atmos_verfrad.sh | 14 +++++++------- ush/radmon_diag_ck.sh | 8 ++++---- ush/radmon_err_rpt.sh | 6 +++--- ush/radmon_verf_angle.sh | 14 +++++++------- ush/radmon_verf_bcoef.sh | 8 ++++---- ush/radmon_verf_bcor.sh | 12 ++++++------ ush/radmon_verf_time.sh | 10 +++++----- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index 0a8cff1dbc..d831a97dcd 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -45,10 +45,10 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then radstat_satype=$(ls d*ges* | awk -F_ '{ print $2 "_" $3 }') if [[ "$VERBOSE" = "YES" ]]; then - echo "$radstat_satype" + echo "${radstat_satype}" fi - echo satype_file = "$satype_file" + echo satype_file = "${satype_file}" #------------------------------------------------------------------ # Get previous cycle's date, and look for the satype_file. Using @@ -61,7 +61,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then use_tankdir=${TANKverf_rad} fi - echo satype_file = "$satype_file" + echo satype_file = "${satype_file}" export SATYPE=$(cat "${satype_file}") @@ -73,9 +73,9 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then satype_changes=0 new_satype=$SATYPE for type in ${radstat_satype}; do - test=$(echo "$SATYPE" | grep "$type" | wc -l) + type_count=$(echo "${SATYPE}" | grep "${type}" | wc -l) - if [[ $test -eq 0 ]]; then + if (( type_count == 0 )); then if [[ "$VERBOSE" = "YES" ]]; then echo "Found $type in radstat file but not in SATYPE list. Adding it now." fi @@ -92,7 +92,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then for type in ${SATYPE}; do - if [[ netcdf -eq 0 && -e diag_${type}_ges.${PDY}${cyc}.nc4.${Z} ]]; then + if (( netcdf == 0 )) && [[ -e "diag_${type}_ges.${PDY}${cyc}.nc4.${Z}" ]]; then netcdf=1 fi @@ -166,7 +166,7 @@ export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} rlist="saphir" for rtype in $rlist; do if compgen -G "$TANKverf_rad/*${rtype}*" > /dev/null; then - ${CHGRP_CMD} "${TANKverf_rad}/*${rtype}*" + ${CHGRP_CMD} "${TANKverf_rad}/"*"${rtype}"* fi done diff --git a/ush/radmon_diag_ck.sh b/ush/radmon_diag_ck.sh index 3a9d3618e7..705db48f5d 100755 --- a/ush/radmon_diag_ck.sh +++ b/ush/radmon_diag_ck.sh @@ -79,7 +79,7 @@ echo "--> radmon_diag_ck.sh" #--------------------------------------------- # load contents of satype_file into an array # - satype_contents=`cat "${satype_file}"` + satype_contents=$(cat "${satype_file}") #------------------------------------------------- @@ -87,9 +87,9 @@ echo "--> radmon_diag_ck.sh" # report anything missing # for sat in ${satype_contents}; do - test=`echo "${radstat_contents}" | grep "${sat}"` - - if [[ ${#test} -le 0 ]]; then + content_count=$(echo "${radstat_contents}" | grep "${sat}" | wc -l) + + if (( content_count <= 0 )); then missing_diag="${missing_diag} ${sat}" fi diff --git a/ush/radmon_err_rpt.sh b/ush/radmon_err_rpt.sh index 39085b1de3..6ae6505624 100755 --- a/ush/radmon_err_rpt.sh +++ b/ush/radmon_err_rpt.sh @@ -63,7 +63,7 @@ err=0 RADMON_SUFFIX=${RADMON_SUFFIX} have_diag_rpt=0 -if [[ -s ${diag_rpt} ]]; then +if [[ -s "${diag_rpt}" ]]; then have_diag_rpt=1 else err=1 @@ -126,7 +126,7 @@ echo "have_diag_rpt = ${have_diag_rpt}" echo match = "${match}" match_len=$(echo ${#match}) - if [[ ${match_len} > 0 ]]; then + if (( match_len > 0 )); then channel2=$(echo "${match}" | gawk '{print $3}') if [[ ${channel2} != ${channel} ]]; then @@ -137,7 +137,7 @@ echo "have_diag_rpt = ${have_diag_rpt}" fi match_len=$(echo ${#match}) - if [[ ${match_len} > 0 ]]; then + if (( match_len > 0 )); then value2=$(echo "${match}" | gawk '{print $7}') bound2=$(echo "${match}" | gawk '{print $9}') diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index 78ea371c9e..f68d7c88cc 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -101,7 +101,7 @@ fi err=0 angle_exec=radmon_angle.x -shared_scaninfo=${shared_scaninfo:-${PARMmonitor}/gdas_radmon_scaninfo.txt} +shared_scaninfo="${shared_scaninfo:-${PARMmonitor}/gdas_radmon_scaninfo.txt}" scaninfo=scaninfo.txt #-------------------------------------------------------------------- @@ -140,14 +140,14 @@ else echo "pgmout = ${pgmout}" prep_step - ctr=$(expr ${ctr} + 1) + ctr=$((ctr + 1)) if [[ ${dtype} == "anl" ]]; then - data_file=${type}_anl.${PDY}${cyc}.ieee_d + data_file="${type}_anl.${PDY}${cyc}.ieee_d" ctl_file=${type}_anl.ctl angl_ctl=angle.${ctl_file} else - data_file=${type}.${PDY}${cyc}.ieee_d + data_file="${type}.${PDY}${cyc}.ieee_d" ctl_file=${type}.ctl angl_ctl=angle.${ctl_file} fi @@ -180,10 +180,10 @@ cat << EOF > input EOF startmsg - ./${angle_exec} < input >> "${pgmout}" 2>>errfile + ./${angle_exec} < input >> "${pgmout}" 2>>errfile export err=$?; err_chk if [[ ${err} -ne 0 ]]; then - fail=$(expr ${fail} + 1) + fail=$(( fail + 1 )) fi if [[ -s ${angl_file} ]]; then @@ -204,7 +204,7 @@ EOF tar_file=radmon_angle.tar if compgen -G "angle*.ieee_d*" > /dev/null || compgen -G "angle*.ctl*" > /dev/null; then - tar -cf ${tar_file} angle*.ieee_d* angle*.ctl* + tar -cf "${tar_file}" angle*.ieee_d* angle*.ctl* ${COMPRESS} ${tar_file} mv "${tar_file}.${Z}" "${TANKverf_rad}/." diff --git a/ush/radmon_verf_bcoef.sh b/ush/radmon_verf_bcoef.sh index 6e8c5fb5d7..ab1058711e 100755 --- a/ush/radmon_verf_bcoef.sh +++ b/ush/radmon_verf_bcoef.sh @@ -129,14 +129,14 @@ else prep_step - ctr=$(expr ${ctr} + 1) + ctr=$(( ctr + 1 )) if [[ ${dtype} == "anl" ]]; then - data_file=${type}_anl.${PDY}${cyc}.ieee_d + data_file="${type}_anl.${PDY}${cyc}.ieee_d" ctl_file=${type}_anl.ctl bcoef_ctl=bcoef.${ctl_file} else - data_file=${type}.${PDY}${cyc}.ieee_d + data_file="${type}.${PDY}${cyc}.ieee_d" ctl_file=${type}.ctl bcoef_ctl=bcoef.${ctl_file} fi @@ -172,7 +172,7 @@ EOF ./${bcoef_exec} < input >>"${pgmout}" 2>>errfile export err=$?; err_chk if [[ ${err} -ne 0 ]]; then - fail=$(expr ${fail} + 1) + fail=$(( fail + 1 )) fi diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index 73042755a3..f1f97c247e 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -119,10 +119,10 @@ else prep_step - ctr=$(expr ${ctr} + 1) + ctr=$(( ctr + 1 )) if [[ ${dtype} == "anl" ]]; then - data_file=${type}_anl.${PDY}${cyc}.ieee_d + data_file="${type}_anl.${PDY}${cyc}.ieee_d" bcor_file=bcor.${data_file} ctl_file=${type}_anl.ctl bcor_ctl=bcor.${ctl_file} @@ -130,7 +130,7 @@ else bcor_stdout=bcor.${stdout_file} input_file=${type}_anl else - data_file=${type}.${PDY}${cyc}.ieee_d + data_file="${type}.${PDY}${cyc}.ieee_d" bcor_file=bcor.${data_file} ctl_file=${type}.ctl bcor_ctl=bcor.${ctl_file} @@ -144,7 +144,7 @@ else # Check for 0 length input file here and avoid running # the executable if $input_file doesn't exist or is 0 bytes # - if [[ -s ${input_file} ]]; then + if [[ -s "${input_file}" ]]; then nchanl=-999 cat << EOF > input @@ -169,7 +169,7 @@ EOF ./${bcor_exec} < input >> "${pgmout}" 2>>errfile export err=$?; err_chk if [[ $? -ne 0 ]]; then - fail=$(expr ${fail} + 1) + fail=$(( fail + 1 )) fi @@ -194,7 +194,7 @@ EOF tar_file=radmon_bcor.tar if compgen -G "bcor*.ieee_d*" > /dev/null || compgen -G "bcor*.ctl*" > /dev/null; then - tar -cf ${tar_file} bcor*.ieee_d* bcor*.ctl* + tar -cf "${tar_file}" bcor*.ieee_d* bcor*.ctl* ${COMPRESS} ${tar_file} mv "${tar_file}.${Z}" "${TANKverf_rad}/." diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index 786262617d..7f98407ec5 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -170,18 +170,18 @@ if [[ ${err} -eq 0 ]]; then continue fi - ctr=$(expr ${ctr} + 1) + ctr=$(( ctr + 1 )) for dtype in ${gesanl}; do if [[ -f input ]]; then rm input; fi if [[ ${dtype} == "anl" ]]; then - data_file=${type}_anl.${PDY}${cyc}.ieee_d + data_file="${type}_anl.${PDY}${cyc}.ieee_d" ctl_file=${type}_anl.ctl time_ctl=time.${ctl_file} else - data_file=${type}.${PDY}${cyc}.ieee_d + data_file="${type}.${PDY}${cyc}.ieee_d" ctl_file=${type}.ctl time_ctl=time.${ctl_file} fi @@ -217,7 +217,7 @@ EOF ./${time_exec} < input >> stdout."${type}" 2>>errfile if [[ ${err} -ne 0 ]]; then - fail=$(expr ${fail} + 1) + fail=$(( fail + 1 )) fi #------------------------------------------------------------------- @@ -241,7 +241,7 @@ EOF if compgen -G "time*.ieee_d*" > /dev/null || compgen -G "time*.ctl*" > /dev/null; then tar_file=radmon_time.tar - tar -cf ${tar_file} time*.ieee_d* time*.ctl* + tar -cf "${tar_file}" time*.ieee_d* time*.ctl* ${COMPRESS} ${tar_file} mv "${tar_file}.${Z}" "${TANKverf_rad}/." From 92b225fe9c885f08bea21baff5f4ab10d97bf309 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Fri, 1 Dec 2023 08:20:30 -0600 Subject: [PATCH 29/30] Address shellcheck SC2126 in ush/radmon_diag_ck.sh Refs #1925 --- ush/radmon_diag_ck.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/radmon_diag_ck.sh b/ush/radmon_diag_ck.sh index 705db48f5d..8c4f54bba5 100755 --- a/ush/radmon_diag_ck.sh +++ b/ush/radmon_diag_ck.sh @@ -87,7 +87,7 @@ echo "--> radmon_diag_ck.sh" # report anything missing # for sat in ${satype_contents}; do - content_count=$(echo "${radstat_contents}" | grep "${sat}" | wc -l) + content_count=$(echo "${radstat_contents}" | grep -c "${sat}") if (( content_count <= 0 )); then missing_diag="${missing_diag} ${sat}" From 5a7c5f9cdab71372236a926cf1b16fb0954056dc Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Fri, 1 Dec 2023 09:28:11 -0600 Subject: [PATCH 30/30] Address shellcheck SC2250 and SC2086 Update verfozn and verfrad driver scripts for shellcheck Refs #1925 --- scripts/exgdas_atmos_verfozn.sh | 14 +++++----- scripts/exgdas_atmos_verfrad.sh | 46 ++++++++++++++++----------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/scripts/exgdas_atmos_verfozn.sh b/scripts/exgdas_atmos_verfozn.sh index b0e3144701..1810fdef5d 100755 --- a/scripts/exgdas_atmos_verfozn.sh +++ b/scripts/exgdas_atmos_verfozn.sh @@ -21,24 +21,24 @@ if [[ -s ${oznstat} ]]; then # Untar oznstat file. #------------------------------------------------------------------ - $NCP $oznstat ./oznstat.${PDY}${cyc} + ${NCP} "${oznstat}" "./oznstat.${PDY}${cyc}" - tar -xvf oznstat.${PDY}${cyc} - rm oznstat.${PDY}${cyc} + tar -xvf "oznstat.${PDY}${cyc}" + rm "oznstat.${PDY}${cyc}" netcdf=0 count=$(ls diag* | grep ".nc4" | wc -l) - if [ $count -gt 0 ] ; then + if [ "${count}" -gt 0 ] ; then netcdf=1 for filenc4 in $(ls diag*nc4.gz); do - file=$(echo $filenc4 | cut -d'.' -f1-2).gz - mv $filenc4 $file + file=$(echo "${filenc4}" | cut -d'.' -f1-2).gz + mv "${filenc4}" "${file}" done fi export OZNMON_NETCDF=${netcdf} - ${USHgfs}/ozn_xtrct.sh + "${USHgfs}/ozn_xtrct.sh" err=$? else diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index d831a97dcd..50320ffba1 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -29,8 +29,8 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # Untar radstat file. #------------------------------------------------------------------ - $NCP "${biascr}" "./biascr.${PDY}${cyc}" - $NCP "${radstat}" "./radstat.${PDY}${cyc}" + ${NCP} "${biascr}" "./biascr.${PDY}${cyc}" + ${NCP} "${radstat}" "./radstat.${PDY}${cyc}" tar -xvf "radstat.${PDY}${cyc}" rm "radstat.${PDY}${cyc}" @@ -44,7 +44,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then #------------------------------------------------------------------ radstat_satype=$(ls d*ges* | awk -F_ '{ print $2 "_" $3 }') - if [[ "$VERBOSE" = "YES" ]]; then + if [[ "${VERBOSE}" = "YES" ]]; then echo "${radstat_satype}" fi @@ -55,7 +55,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # the previous cycle will get us the previous day's directory if # the cycle being processed is 00z. #------------------------------------------------------------------ - if [[ $cyc = "00" ]]; then + if [[ ${cyc} = "00" ]]; then use_tankdir=${TANKverf_radM1} else use_tankdir=${TANKverf_rad} @@ -71,16 +71,16 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then # to $TANKverf/radmon.$PDY. #------------------------------------------------------------- satype_changes=0 - new_satype=$SATYPE + new_satype=${SATYPE} for type in ${radstat_satype}; do type_count=$(echo "${SATYPE}" | grep "${type}" | wc -l) if (( type_count == 0 )); then - if [[ "$VERBOSE" = "YES" ]]; then - echo "Found $type in radstat file but not in SATYPE list. Adding it now." + if [[ "${VERBOSE}" = "YES" ]]; then + echo "Found ${type} in radstat file but not in SATYPE list. Adding it now." fi satype_changes=1 - new_satype="$new_satype $type" + new_satype="${new_satype} ${type}" fi done @@ -97,15 +97,15 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then fi if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_ges.${PDY}${cyc}*.${Z} "${type}.${Z}" + mv "diag_${type}_ges.${PDY}${cyc}"*".${Z}" "${type}.${Z}" ${UNCOMPRESS} "./${type}.${Z}" else echo "WARNING: diag_${type}_ges.${PDY}${cyc}*.${Z} not available, skipping" fi - if [[ $USE_ANL -eq 1 ]]; then + if [[ ${USE_ANL} -eq 1 ]]; then if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDY}${cyc}*.${Z}" | wc -l) -gt 0 ]]; then - mv diag_${type}_anl.${PDY}${cyc}*.${Z} "${type}_anl.${Z}" + mv "diag_${type}_anl.${PDY}${cyc}"*".${Z}" "${type}_anl.${Z}" ${UNCOMPRESS} "./${type}_anl.${Z}" else echo "WARNING: diag_${type}_anl.${PDY}${cyc}*.${Z} not available, skipping" @@ -113,7 +113,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then fi done - export RADMON_NETCDF=$netcdf + export RADMON_NETCDF=${netcdf} #------------------------------------------------------------------ @@ -137,7 +137,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then if [[ ${CLEAN_TANKVERF:-0} -eq 1 ]]; then "${USHradmon}/clean_tankdir.sh" glb 60 rc_clean_tankdir=$? - echo "rc_clean_tankdir = $rc_clean_tankdir" + echo "rc_clean_tankdir = ${rc_clean_tankdir}" fi fi @@ -150,22 +150,22 @@ fi 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 +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} fi ##################################################################### # Restrict select sensors and satellites export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} rlist="saphir" -for rtype in $rlist; do - if compgen -G "$TANKverf_rad/*${rtype}*" > /dev/null; then +for rtype in ${rlist}; do + if compgen -G "${TANKverf_rad}/"*"${rtype}"* > /dev/null; then ${CHGRP_CMD} "${TANKverf_rad}/"*"${rtype}"* fi done