小编And*_*all的帖子

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

我得到了以下代码:

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

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

谢谢@TomFenech

bash

6
推荐指数
1
解决办法
1万
查看次数

如何抑制单行脚本中的错误

我正在读取日志文件,检查日志时间顺序。我正在将日志文件读入数组,仅存储格式正确的时间戳日志行:

MESSAGE_ONE 是从文件中读取的行。

Timestamp1=$(echo "$MESSAGE_ONE" | cut -c1-20)
Timestamp1date=$(date -d "$Timestamp1" +%s) 此行会因格式不正确的行而产生错误

我按如下方式处理错误:

如果[“$?” =“1”];然后
继续
else
将有效的日志行添加到数组中

它按照我想要的方式工作;我想做的就是抑制格式错误的日志条目产生的错误。我试过了

Timestamp1date=$(date -d "$Timestamp1" +%s) 2>/dev/null

但没有成功。我不想在 cli 命令后使用 2>/dev/null 来抑制所有错误输出。有人可以帮忙吗?

bash

3
推荐指数
1
解决办法
1096
查看次数

标签 统计

bash ×2