Chinaunix

标题: shell whilhe循环请教 [打印本页]

作者: 236848253    时间: 2016-05-06 12:00
标题: shell whilhe循环请教
小弟写了一个while循环:
cat $domain|while read line
do
cd /var/log/apache/
# echo $line >$bandwidth
cat $line$time|$grep|awk '{print $9,$10}'|sort|uniq -c|sort -nr|awk '{a+=$1*$3}END{print a/1024/1024*8}' >> $bandwidth
done

小弟想while循环里输$line 然后在第二行追加 cat一行的结果以此循环,但是为什么加入echo以后,while就处理一次就不处理了呢?
想要的结果是:
xx.xxx.com
cat一行的结果
xx.xxx.net
cat的结果。

现在问题:
xx.xxx.com
cat一行的结果
执行一次循环就结束了
作者: q1208c    时间: 2016-05-06 12:46
你的原始数据呢?
作者: cao627    时间: 2016-05-06 12:50
echo $line >$bandwidth
cat xxxxxxxx>> $bandwidth

你每次循环中执行如上两句,第一句清空文件后添加行,第二句追加行。如此循环下去最终文件中自然只有两行,于是你以为循环只进行了一次。

作者: 236848253    时间: 2016-05-06 13:40
不对呀,我吧echo 放在cat的下面,就不会有这问题,但是这样不好看
回复 3# cao627


   
作者: cao627    时间: 2016-05-06 14:40
cat $domain|while read line
do
cd /var/log/apache/
echo $line >$bandwidth
cat $line$time|$grep|awk '{print $9,$10}'|sort|uniq -c|sort -nr|awk '{a+=$1*$3}END{print a/1024/1024*8}' >> $bandwidth
echo $((n++))
done

先看看循环到底执行几次再说




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2