case 4.1
Info for unit 1 starts now
info1
info2
info3
info5 - the one I want
info6
info7
Info for unit 2 starts now
info1
info2
info3
info5 - the one I want
info6
info7
endcase 4.1
2 つのユニットの情報は、ファイルに 1000 回以上出力されます。
私のアルゴリズムは次のとおりです。
while read line
do
if line contains unit1
then current_unit=1
if line contains unit2
then current_unit2
if line contains info5
then
if current_unit = 1
then unit1_val = *the relevant info from this line*
elif current_unit = 2
then unit2_val = *the relevant info from this line*
if both unit1_val > 20 && unit2_val > 20
then pass
短いバージョン: 必要な値を取得します。ある時点で両方の値が特定の値を超えている場合、テストは合格です。私もBashを使ってこれをやろうとしています
明確にするために編集:私が抱えている問題は、変数をifステートメントに出し入れすることです。私の解析と比較は問題ありませんが、最後の if にたどり着くと、値が存在しないのは、それらが由来する if - fi に対してローカルであるためです (または、場合によっては由来しません)。
編集2:
if [[ $line == *"info5"* ]]
then
CURRENT_UNIT=5
fi
if [[ $line = *"info6"* ]]
then
CURRENT_UNIT=6
fi
if [[ $line =~ "text i want" ]]
then
if [[ $CURRENT_UNIT -eq 5 ]]
then
UNIT_5_MEM=$(awk '/Used heap/ { gsub(/M/, " "); print $4 }')
elif [[ $CURRENT_VC -eq 6 ]]
then UNIT_6_MEM=$(awk '/Used heap/ { gsub(/M/, " "); print $4 }')
fi
fi
if [[ $UNIT_5_MEM -gt 20 && $UNIT_6_MEM -gt 20 ]]
then
echo "Passed"
fi