如果日志文件中缺少字符串,请发送电子邮件。验证输入

如果日志文件中缺少字符串,请发送电子邮件。验证输入

以下 bash 脚本尝试读取文件并搜索给定的字符串。 在这种情况下,案件应该产生积极的结果 如果长度为零,即未找到字符串,则使用 Postfix 发送电子邮件(仅发送)。

#!/bin/bash

results=$(grep "Parameters: {\"id_at_chain\"=>\"001142\", \"articles\"" ~/makt/current/log/production.log)
lines=($results)
if [ -z "$results" ]; then
  echo "array articles 001142 missing" | mail -s "problem 001142" [email protected] [email protected]
fi

我想要做的是放置一些验证代码来测试(并可能转储到日志文件):
• 是否找到该文件
• 是否$results存在
• 的长度$results

我可以echo $results并且它给出了预期的结果,但是
echo -z "$results" 似乎输出的$results不是长度

答案1

我认为问题在于您认为[是某种 shell 语法,而不是命令。编写代码的另一种方法是说

if test -z "$results" ; then

然后可能更明显的是,这是or命令-z的标志。[test

您将命令的输出grep放入名为 的字符串中results,然后创建一个名为 的单元素数组,lines其中包含该字符串。想必你已经有了一些计划,lines但目前这只是一种干扰。

至于你的要点

  • [ -e ~/makt/current/log/production.log ]可以告诉你该文件是否存在
  • $results总是存在的,当然它可能是空的,但你创建了它。
  • ${#results}是字符数$results

相关内容