【发布时间】:2018-09-11 08:23:48
【问题描述】:
我正在使用条件检查检查日志并将其复制到另一个文件夹。while 循环在第一次迭代时执行良好。在下一次迭代中,文件副本不起作用。这是我的代码。
current_time=$(date "+%Y.%m.%d-%H.%M.%S")
tail -n 0 -F hive-server2.log | \
while read LINE
do
if [ `echo "$LINE" | grep -c "DROP" ` -gt 0 ]
then
AuditTypeID=14
QueryResult="$(grep -oEi 'DROP TABLE [a-zA-Z][a-zA-Z0-9_]*' hive-server2.log | sed -n \$p)"
echo -e "$QueryResult" >/dev/null < op.txt
cp op.txt op/op.txt.$current_time
fi
done
在第一次迭代中,输出文件被创建并存储在 op 目录中。在下一次迭代中,文件不会创建。
预期输出: 每次迭代都应该在 op 目录中创建新文件。
任何帮助将不胜感激。
【问题讨论】:
-
如何填充
$current_time变量? -
你还打算问多少次这个问题 - stackoverflow.com/users/8235369/teju-priya?tab=questions
-
你认为这条线有什么作用 -
echo -e "$QueryResult" >/dev/null < op.txt。这是不正确的,没有做你期望做的事情 -
@Teju Priya,您为什么不在代码标签中向我们展示示例输入和示例输出,以便我们可以在代码中帮助您。
-
为什么要创建一个新文件?输出文件名在循环内不会改变。