我有一个问题 “if语句”,而内部读循环\ nBASH:同时读取而不回波+条件=奇怪的行为
实施例1:
81 function processconfig2()
82 {
83 pattern='^monthly'
84 while read line
85 do
86 if [[ $line =~ $pattern ]]; then
87 echo $line
88 fi
89 done < /etc/logrotate.conf | awk '/^\/var\/log\/wtmp/, /^}/'
90
91 exit 0
92 }
输出为空\ n 线89后加入后回声$线:\ n
81 function processconfig2()
82 {
83 pattern='^monthly'
84 while read line
85 do
86 if [[ $line =~ $pattern ]]; then
87 echo $line
88 fi
89 echo $line
90 done < /etc/logrotate.conf | awk '/^\/var\/log\/wtmp/, /^}/'
91
92 exit 0
93 }
我已经得到了正确的输出(在条件线86妥善处理):
/var/log/wtmp {
monthly
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
请问有人可以向我解释这种奇怪的行为。
因为它打印两次。在第二个例子中改变第87行echo $ line“twice”是一个证明。 – ForColleague 2014-11-21 20:16:00
谢谢,看起来更优雅,会提高效率。 – ForColleague 2014-11-21 20:23:11
你应该评论答案而不是问题(如果你真的喜欢它,可能会赞成并接受) – keyser 2014-11-21 20:23:48