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
Also meinst du 3 Funktionen zu haben. Und rufe die beiden inneren Schleifen in der anderen Funktion auf? Vielen Dank. –
Ja, das wäre die bessere Option und Sie haben eine bessere Kontrolle. Akzeptieren Sie die Antwort, wenn dies hilft. –
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! –