2016-08-17 20 views
0

Ich habe ein paar Probleme mit meinem Bash-Skript. Ich habe innere While-Schleifen im Bash-Skript. Aber ich habe einige Probleme mit der ersten Schleife oder der zweiten Schleife.Weiter while loops bash

Ich möchte zum Beispiel: Wenn die erste innere Schleife nicht wahr ist, weiter mit der zweiten inneren Schleife. Aber immer noch funktioniert nur eine der Schleifen. Daher sollten beide Schleifen immer dann funktionieren, wenn das richtige Ereignis eintritt.

Dies ist das Skript:

#!/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=('1' '0' '5' '0' '7' '2' '0' '13' '0' '18' '0' '0' '7' '0' '6' '0' '0' '1' '3' '0' '0' '0' '3' '0')  

logDir=/var/atlassian/application-data/jira/log 
logIng=$logDir/atlassian-ing-security.log 
logJira=$logDir/atlassian-jira-security.log  


function abc {  

while true; do 
currentMinute=$(date +%S) 
currentHour=$(date +%k) 
currentDay=$(date +%u) 
currentWeek=$(date +%W)  

    if [[ $currentMinute == 00 ]]; 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 
    else 
     continue 2 
    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  

    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  

    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  

    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 
    else 
     continue 2 
    fi 
    done  

done  

}  

abc  

Antwort

0

Ich schlage vor, die innere Schleife auf eine andere Funktion zu verwenden und sie rufen, wann immer erforderlich ist.

+0

Also meinst du 3 Funktionen zu haben. Und rufe die beiden inneren Schleifen in der anderen Funktion auf? Vielen Dank. –

+0

Ja, das wäre die bessere Option und Sie haben eine bessere Kontrolle. Akzeptieren Sie die Antwort, wenn dies hilft. –

+0

Also in der ersten While-Schleife ein if/else hinzufügen, die andere While-Schleife Funktionen aufrufen? Ich werde es versuchen und natürlich akzeptieren, wenn es funktioniert! –