次のシェルスクリプトを実行するとエラーが発生します。/test1hc.sh[59]: [[[:if 条件で見つかりません]

次のシェルスクリプトを実行するとエラーが発生します。/test1hc.sh[59]: [[[:if 条件で見つかりません]
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')混在させないでください。$( ...)全体的に、より現代的なスタイルのみを使用する方向に切り替える

関連情報