Описание:
У меня есть код, который извлекает метки времени путем сопоставления ключевого слова / предложения файла .log, который существует в нескольких папках вида log_Job_*
.
Он рассчитывает длительность различных процессов и записывает выходные данные в файл .CSV.
Какие столбцы я хочу иметь в моем .csv:
Теперь проблема в том, что у меня есть 2 типа процессов в разделе 2. Тип процесса. Итак, подумал об использовании здесь падежных операторов. И сделал следующее:
#!/bin/bash
cd /path/to/manoj/version_2019_logs/
for file in log_Job_*/manoj.log; do
ProcessType1="$(grep -F 'Running process mpeXbrlImport.xml' "$file" | awk '{print $5}' | cut -c 4-)"
ProcessType2="$(grep -F 'Running process mpeXbrlValidate.xml' "$file" | awk '{print $5}' | cut -c 4-)"
ProcessType="$ProcessType1","$ProcessType2"
case $ProcessType in
$ProcessType1)
#set of commands to get other variaqbles
Var="$Filename","$ProcessType","$TotalDuration","$Initialization","$MPEProcessDuration","$TotalPartitionDuration","$WaitPartitionDuration","$MainPartionDuration"
echo $Var >>OutputFile_Import.csv
;;
*)
#repeat the set of commands and this time save with different variable names
Var1="$Filename1","$ProcessType1","$TotalDuration1","$Initialization1","$MPEProcessDuration1","$TotalPartitionDuration1","$WaitPartitionDuration1","$MainPartionDuration1"
echo $Var1 >>OutputFile_Validate.csv
;;
esac
done
С этим я планирую создать два отдельных файла .CSV на основе Processtype
, а затем объединить оба файла.
Проблема: Сценарий успешно выполняется, но в конце он генерирует только один файл, т.е. OutputFile_Validate.csv
Я тщательно проверил сценарий Я не использую какие-либо переменные повторно. Может кто-нибудь сказать мне, что может быть причиной этого !!
Если я понимаю хорошо Вашу проблему, Вы хотите подать import.csv когда ProcessType1
не пусто и validate.csv когда ProcessType2
не.
Вы можете test
если переменная установлена и не пустая с:
if [ -n "$VAR" ];
then
echo "VAR is set\n"
fi
Ваш код мог быть похожим:
#!/bin/bash
cd /path/to/manoj/version_2019_logs/
for file in log_Job_*/manoj.log; do
ProcessType1="$(grep -F 'Running process mpeXbrlImport.xml' "$file" | awk '{print $5}' | cut -c 4-)"
ProcessType2="$(grep -F 'Running process mpeXbrlValidate.xml' "$file" | awk '{print $5}' | cut -c 4-)"
if [ -n "$ProcessType1" ];
then
#set of commands to get other variaqbles
Var="$Filename","$ProcessType1","$TotalDuration","$Initialization","$MPEProcessDuration","$TotalPartitionDuration","$WaitPartitionDuration","$MainPartionDuration"
echo $Var >>OutputFile_Import.csv
fi
if [ -n "$ProcessType2" ];
then
#repeat the set of commands and this time save with different variable names
Var1="$Filename1","$ProcessType2","$TotalDuration1","$Initialization1","$MPEProcessDuration1","$TotalPartitionDuration1","$WaitPartitionDuration1","$MainPartionDuration1"
echo $Var1 >>OutputFile_Validate.csv
fi
done