Ank*_*wal 0 linux bash grep scp
我在脚本中运行此命令
while [ 1 ]
do
if [ -e $LOG ]
then
grep -A 5 -B 5 -f $PATTERNS $LOG >> $FOREMAIL
break
fi
done
Run Code Online (Sandbox Code Playgroud)
$ LOG文件是从另一台机器scp的.因此,只要它出现在当前目录中,while循环就会检测到它并执行grep.问题是,$ FOREMAIL文件变为空.但是如果我在脚本之外运行这个grep作为具有相同文件和参数的独立命令,我可以看到它生成一个输出.
我很困惑为什么这个命令在脚本中没有产生o / p?
一旦scp 创建了文件,-e就会触发,而它仍然没有数据,而grep正在空文件上运行.您需要等到文件传输完毕.
您可以通过转移到临时文件名来完成此操作,而不是从正在推送文件的计算机上通过ssh运行mv.
编辑:机器复制到日志文件的代码...
scp $log 192.168.0.1:/logfiles/${log}.tmp
ssh 192.168.0.1 mv /logfiles/${log}.tmp /logfiles/${log}
Run Code Online (Sandbox Code Playgroud)