计数器变量的值是多少? linux -bash

时间:2014-03-28 01:21:28

标签: linux bash email

我想知道它在哪里更改计数器变量,我用它来计算文件中包含的邮​​件地址,当我打印出循环时,该值从终端消失,另一方面如果打印在循环,价值是正确的。所以我不明白价值在哪里丢失,我必须打印出正确的周期

    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

1 个答案:

答案 0 :(得分:2)

变量的值会丢失,因为当您使用|时,您会分叉一个新的子shell。变量CONTADOR在子shell中创建。当你走出它时(即在done之后),该变量没有任何价值。

阅读文件的正确方法是

while read LINE; do  
  # do stuff here 
done < "$FILENAME_2"

详细了解如何使用while loopBashFAQ/001读取数据。