mercredi 17 août 2016

Break out while loop and go to if/else

I'm having problem to break out a while loop and start from the beginning of the while loop. I want to loop to check continuously if the time is equal to 59 seconds if not go to the while loop to check the logfile. The inner while loop should only do something when something specific is found in the logfile.

Script:

#!/bin/bash    

counterSearch=0
counterIssue=0
counterPassed=0
counterFailed=0
counterSearchPassed=0
counterSearchFailed=0
counterIssuePassed=0
counterIssueFailed=0
counterTotal=0
counterHourly=0
counterAddHourly=0
declare -a hourlyScan=('6' '0' '5' '0' '7' '2' '0' '13' '0' '18' '0' '0' '7' '0' '6' '0' '0' '1' '3' '0' '0' '0' '3' '0')    

while true; do    

currentMinute=$(date +%S)
currentHour=$(date +%k)
currentDay=$(date +%u)
currentWeek=$(date +%W)    

  if [[ $currentMinute -eq 59 ]]; then
  if [[ ${#hourlyScan[@]} -eq 24 ]]; then
       unset hourlyScan[23]
       hourlyScan=($counterHourly "${hourlyScan[@]}")
       counterHourly=0    

       for i in "${!hourlyScan[@]}"; do
          $cliScript --server $cliServer --user $cliUser --password $cliPass --action modifyPage --space "" --title "" \
          --findReplaceRegex "<tr><td>$i</td><td>(\d*)</td></tr>:<tr><td>$i</td><td>${hourlyScan[$i]}</td></tr>"
       done
  fi
  fi    

tail -n0 -F $logJira | \
while read line ; do      

    if echo "$line" | grep -e "/rest/api/2/search.*PASSED" 1>/dev/null 2>&1 ; then
       echo "$date - Search and passed API action" >> $logIng
       counterSearch=$((counterSearch+1))
       counterPassed=$((counterPassed+1))
       counterHourly=$((counterHourly+1))
       counterTotal=$((counterTotal+1))
       echo "$date - Total Passed API Authentication: $counterPassed" >> $logIng
       echo "$date - Total search API actions: $counterSearch" >> $logIng
       continue    

    elif echo "$line" | grep -e "/rest/api/2/search.*FAILED" 1>/dev/null 2>&1 ; then
       echo "$date - Search and failed API action" >> $logIng
       counterSearch=$((counterSearch+1))
       counterFailed=$((counterFailed+1))
       counterHourly=$((counterHourly+1))
       counterTotal=$((counterTotal+1))
       echo "$date - Total Failed API Authentication: $counterFailed" >> $logIng
       echo "$date - Total search API actions: $counterSearch" >> $logIng
       continue    

    elif echo "$line" | grep -e "/rest/api/2/issue.*PASSED" 1>/dev/null 2>&1 ; then
       echo "$date - Issue and Passed API action" >> $logIng
       counterIssue=$((counterIssue+1))
       counterPassed=$((counterPassed+1))
       counterHourly=$((counterHourly+1))
       counterTotal=$((counterTotal+1))
       echo "$date - Total Passed API Authentication: $counterPassed" >> $logIng
       echo "$date - Total issue API actions: $counterIssue" >> $logIng
       continue    

    elif echo "$line" | grep -e "/rest/api/2/issue.*FAILED" 1>/dev/null 2>&1 ; then
       echo "$date -Issue and Failed API action" >> $logIng
       counterIssue=$((counterIssue+1))
       counterFailed=$((counterFailed+1))
       counterHourly=$((counterHourly+1))
       counterTotal=$((counterTotal+1))
       echo "$date - Total Failed API Authentication: $counterFailed" >> $logIng
       echo "$date - Total issue API actions: $counterIssue" >> $logIng
       continue    

    fi
done
done    

Who can help me out please?

Thank you so much!

Aucun commentaire:

Enregistrer un commentaire