bash - 错误的尾部语法或 grep 命令?

标签 bash

我得到了以下代码:

tail -fn0 /var/log/messages | \  
while read line ; do  
       echo "$line" | grep "test"  
       if [ $? = 0 ]  
       echo "Running information gathering"  
       then  
etc...etc  

它应该做的是持续监视“/var/tmp/messages”文件的添加行,如果其中包含“test”一词,则执行脚本的其余部分并在完成后退出。
它会尽快执行脚本的其余部分 任何 无论行的内容如何,​​都会将行添加到消息文件中。我添加了 echo 命令,并且 $line 正确包含了新的日志文件行。我尝试将测试“$? = 0”更改为“$? = 1”,但没有任何区别。
有人可以给我一个指针吗?

谢谢@TomFenech

最佳答案

我建议不要使用循环,您可以通过使用 grep 使事情变得更简单:

tail -fn0 /var/log/messages | grep -q test
echo "Running information gathering"
# rest of script
grep -q在第一场比赛后退出,因此一旦找到第一场比赛,您的脚本就会继续。

关于bash - 错误的尾部语法或 grep 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26737639/

相关文章:

linux - 检索从 ssh 运行的 bash 命令的结果到变量中

java - 如何将 java 库引用添加到 shell 脚本

bash - 如何在 bash 中将列除以常量

xcode - 从 bash 导入 $PATH 到 Xcode

linux - 如果 [[ $? -ne 0 ]]; .ksh 中的意思

linux - 保留最新的 x 数量的文件删除其余的 bash

macos - BASH:拆分 MAC 地址 -> 000E0C7F6676 到 00:0E:0C:7F:66:76

bash - 在 Ubuntu BASH 中按字母顺序复制文件夹中的文件

perl - 如何执行存储在 shell 脚本变量中的 Perl 代码?

bash - 读入 bash 脚本并将参数传递给脚本