我得到了以下代码:
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
我正在读取日志文件,检查日志时间顺序。我正在将日志文件读入数组,仅存储格式正确的时间戳日志行:
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 ×2