다음 쉘 스크립트를 실행할 때 오류가 발생합니다./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또는 로컬 머신에 배포하여 추가 오류 및 제안 사항을 확인하세요.

고려해야 할 세 가지 잠재적으로 관련된 질문은 다음과 같습니다.

  • 이 줄 위에는 코드가 없어야 합니다 #!/bin/ksh. 이런 라인은 #!항상 있어야합니다첫 번째스크립트가 실행되는 셸을 식별하는 스크립트 줄
  • 스크립트가 실행 가능한지 확인하고 프로그램처럼 호출하십시오. (예를 들어 ksh script.sh대신 사용하지 마십시오 ./script.sh. 그래야 #!선을 고려할 수 있습니다.)
  • 일관성을 위해 백틱 평가(예 param=`db2 ...`: )와 중첩 평가( )를 CurrentDay=$(date '+%A')혼합 하지 마십시오. $( ...)전체적으로 보다 현대적인 스타일만을 사용하는 방향으로 전환

관련 정보