【发布时间】:2018-03-23 10:48:09
【问题描述】:
我写了这个脚本:
for ip in ${ARRAY[*]}; do
for e in ${ARRAY[*]}; do
echo $e
done | grep -c "$ip" | if [[ "$(cat)" -lt "10" && $sent != *"$ip"* ]]; then
sent=$sent$ip
sed -n "/$ip/p" $1 | mail -s "subject" "mail@mail.mail"
fi
done
我想从ARRAY 中获取每个元素并计算该项目在ARRAY 中的次数。如果此计数小于 10 并且此元素是第一次计数(以避免对一个元素计数两次),则会发送一封电子邮件。
但是,sent 变量不保存字符串连接。如果我在分配后创建了echo $ sent,则发送返回预期结果。
如果我在fi 之后创建echo $ sent,则变量已经为空。显然,通过这种方式,两个元素被添加到帐户中,并且发送了两封邮件而不是一个。
我做错了什么?
【问题讨论】:
-
Piping (
|) 创建子外壳,其变量在“父”外壳中“不可见”。 -
从技术上讲,重复是标题中问题的直接解决方案,但这里有很多问题,所以我认为回答比重复更有意义。