【发布时间】:2015-01-20 01:55:09
【问题描述】:
我在 while read 循环中遇到了“if 语句”的问题。\n
示例 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 行后添加 echo $line:\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" 是一个证明。
-
谢谢,看起来更优雅,会提高效率。
-
你应该评论答案而不是问题(如果你真的喜欢它,可能会赞成并接受)
标签: regex bash if-statement while-loop