exec > /apps/jobs/logs/healthcheck.log 2>&1
set -x
#!/bin/ksh
. ~/vdom.profile
db2 CONNECT to $DATABASE_MIF user $DBUSER_MIF using $DBPASS_MIF
rm -r /apps/jobs/scripts/alerts/health_check/tempdata/*
cd /apps/jobs/scripts/alerts/health_check/tempdata/
emailalertgroup1='[email protected],[email protected]'
param=`db2 -x "select dflt_value from param_def where param_group_id = 'COUNTFL'"`
param1=`db2 -x "select dflt_value from param_def where param_group_id = 'COUNTM'"`
amempty=`db2 -x "select con.router_id ,count(tran.MESSAGE_ID) as failure_count , con.router_description from MIF_ROUTER_CONFIG con
LEFT JOIN tran_log tran ON con.ROUTER_ID = tran.ROUTER_ID where con.EXECUTION_FREQUENCY = '1' and tran.RESULT_CODE in (select dflt_value from param_def where param_group_id = 'STATUSCD') and tran.created_dttm > CURRENT_TIMESTAMP-$param1 MINUTE group by con.router_id,con.router_description HAVING count(tran.MESSAGE_ID)>=$param"`
db2 "select con.router_id ,count(tran.MESSAGE_ID) as failure_count , con.router_description from MIF_ROUTER_CONFIG con
LEFT JOIN tran_log tran ON con.ROUTER_ID = tran.ROUTER_ID where con.EXECUTION_FREQUENCY = '1' and tran.RESULT_CODE in (select dflt_value from param_def where param_group_id = 'STATUSCD') and tran.created_dttm > CURRENT_TIMESTAMP-$param1 MINUTE group by con.router_id,con.router_description HAVING count(tran.MESSAGE_ID)>=$param" > /apps/jobs/scripts/alerts/health_check/tempdata/failure_count.txt
CurrentDay=$(date '+%A')
CurrentTime=$(date +"%H:%M")
cd /apps/jobs/scripts/alerts/health_check/tempdata/
if [[[ $amempty != "" ] -a [ $CurrentDay == "Friday" -a $CurrentTime -ge "10:00" ] ] -o [ [ $amempty != "" ] -a [ $CurrentDay == "Sunday" -a $CurrentTime -le "08:00" ]]]
then
echo "Hi Team,
Please treat this with HIGH Priority. Below are the list of router with the failure count. Please login to MIF and take necessary action. Job did not fail."
cat failure_count.txt
else
echo The message flow is normal..!! No action Required..!!
fi
exit
答え1
対応する演算子は存在しません[[[
。コードを貼り付けます。https://shellcheck.net/shellcheck
または、ローカルマシンに展開して追加のエラーと提案を確認してください。
考慮すべき3つの潜在的に関連する質問は次のとおりです。
- この行の上にはコードを含めないでください
#!/bin/ksh
。こんなラインは#!
いつも最初スクリプトが実行されるシェルを識別するスクリプト行 - スクリプトが実行可能であることを確認し、プログラムのように呼び出します。 (たとえば、
ksh script.sh
代わりに使用しないでください./script.sh
。#!
線を考慮することができます。) - 一貫性を保つために、バックティック評価(たとえば
param=`db2 ...`
)とネスト評価()をCurrentDay=$(date '+%A')
混在させないでください。$( ...)
全体的に、より現代的なスタイルのみを使用する方向に切り替える