我想知道它在哪里更改计数器变量,我用它来计算文件中包含的邮件地址,当我打印出循环时,该值从终端消失,另一方面如果打印在循环,价值是正确的。所以我不明白价值在哪里丢失,我必须打印出正确的周期
cat $FILENAME_2 | while read LINE
do
if [ "$LINE" = "" ]
then
echo "blanks"
exit 1
fi
TEST=${LINE:0:1}
//verify string start with #
if [ "$TEST" != "#" ] ; then
let CONTADOR=CONTADOR+1
cat html_list | mail -a "Content-type:text/html" -s "$ASUNTO" $LINE
echo "Mail enviado a $LINE"
fi
echo "i send $CONTADOR mails" //print mails count
done
echo "i send $CONTADOR mails" // print blank space
答案 0 :(得分:2)
变量的值会丢失,因为当您使用|
时,您会分叉一个新的子shell。变量CONTADOR
在子shell中创建。当你走出它时(即在done
之后),该变量没有任何价值。
阅读文件的正确方法是
while read LINE; do
# do stuff here
done < "$FILENAME_2"
详细了解如何使用while loop
在BashFAQ/001读取数据。