遍历关联数组并通过内容发送一封邮件

Iterate over associative array and send a single mail over the contents

下面是我目前正在处理的脚本片段。

AArr 是一个关联数组,其中包含队列名称及其相应的值(整数值),并且对其进行基本迭代(for)会给出以下输出:

for i in "${!AArr[@]}"
 do
   echo "NUMBER COUNT ON $i' is : ${AArr[$i]}"
done

NUMBER COUNT ON queue.hxi.1 is:  123
NUMBER COUNT ON queue.rui.4 is:  12
NUMBER COUNT ON queue.hxi.5 is:  35
NUMBER COUNT ON queue.fer.5 is:  1000
NUMBER COUNT ON queue.dcer.2 is:  45

我想迭代关联数组,但只发送一封上述格式的电子邮件,而不是为每个迭代的键发送邮件。 我对实现这一目标的逻辑感到困惑?任何输入实际上都是 helpfull.Thanks.

为什么不能直接将 for 循环的输出传送到 mail 命令。该命令很可能可以通过管道从标准输入读取。所以你需要做的就是

for entry in "${!AArr[@]}"; do
   printf "NUMBER COUNT ON %s is : %d\n" "$entry" "${AArr[$entry]}"
done | mail

您可以将数组中的所有值推送到一个变量中,例如:

for i in "${!AArr[@]}"
do
    VAL="$VAL \n NUMBER COUNT ON $i' is : ${AArr[$i]}" # concat each value of array with existing in VAL
done
echo -e "${VAL}" # use -e to enable interpretation of backslash escapes