我有一个无限循环,它使用aws cli来获取微服务名称,它是诸如环境所需的任务,正在运行的任务数之类的参数。
在一个环境中运行着100多种微服务。我需要比较当前循环和先前循环中特定微服务的aws ecs metric运行任务的值。
说一个微服务X的度量指标为正在运行的任务5。由于它是一个无限循环,一段时间后,微服务X再次出现循环。现在,让我们假设正在运行的任务的值为4。我想比较currnet循环的正在运行的任务的值为4与上一次运行的正在运行的任务的值为5。
答案 0 :(得分:0)
如果您要问一个通用的问题,如何保持先前的值以便可以将其与当前值进行比较,只需将其存储在变量中即可。您可以将以下内容用作起点:
#!/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
如果骨架脚本适合您,请随意对其进行修改,但是您需要进行比较。
希望这会有所帮助。
答案 1 :(得分:0)
我不知道您输入的内容看起来如何,但是类似的内容可能对您有用:
#!/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
致谢!