Сценарии оболочки для сравнения значения текущей итерации с предыдущей итерацией - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть бесконечный цикл, который использует aws cli для получения имен микросервисов, их параметров, например, желаемых задач, количества запущенных задач и т. Д. Для среды.

В среде работают 100 микросервисов.У меня есть требование сравнить значение задачи выполнения метрики aws ecs для конкретного микросервиса в текущем цикле и с предыдущим циклом.

Скажем, на микросервисе X есть задача выполнения метрики 5. Как этоявляется бесконечным циклом, через некоторое время снова поступает цикл для микросервиса X. Теперь давайте предположим, что значение запущенной задачи равно 4. Я хочу сравнить текущую задачу для цикла currnet, которая равна 4, со значением запущенной задачизадание для предыдущего запуска, которое составляет 5.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Я не знаю, как точно выглядит ваш ввод, но что-то вроде этого может быть полезно для вас:

Сценарий

#!/bin/bash

declare -A app_stats

while read app tasks
do
  if [[ ${app_stats[$app]} -ne $tasks &&  ! -z ${app_stats[$app]} ]]
  then
    echo "Number of tasks for $app has changed from ${app_stats[$app]} to $tasks"
    app_stats[$app]=$tasks
  else
    app_stats[$app]=$tasks
  fi
done <<< "$( cat input.txt)"

Вход

App1 2
App2 5
App3 6
App1 6

Вывод

Number of tasks for App1 has changed from 2 to 6

С уважением!

0 голосов
/ 05 декабря 2018

Если вы задаете общий вопрос о том, как сохранить предыдущее значение, чтобы его можно было сравнить с текущим значением, просто сохраните его в переменной.В качестве отправной точки вы можете использовать следующее:

#!/bin/bash

previousValue=0

while read v; do
  echo "Previous value=${previousValue}; Current value=${v}"
  previousValue=${v}
done

exit 0

Если указанный выше скрипт называется testval.sh.И у вас есть входной файл с именем test.in со следующими значениями:

2
1
4
6
3
0
5

Затем выполнение

./testval.sh <test.in

сгенерирует следующий вывод:

Previous value=0; Current value=2
Previous value=2; Current value=1
Previous value=1; Current value=4
Previous value=4; Current value=6
Previous value=6; Current value=3
Previous value=3; Current value=0
Previous value=0; Current value=5

Если сценарий скелета работает для вас, не стесняйтесь изменять его, однако вам нужно делать сравнения.

Надеюсь, это поможет.

...