如果程序的输出包含特定单词,则指示 shell 脚本执行任务

如果程序的输出包含特定单词,则指示 shell 脚本执行任务

我需要在 Bash 中创建一个程序来启动命令,检查结果是否包含单词,如果包含则执行某些操作。

示例:我需要检查打印机是否在线

lpstat -p [printer name]

如果结果包含这个词,inactive脚本应该给我发一封邮件。

如何检查程序输出中的某个单词?

答案1

这是强者的任务grep

lpstat -p myprinter | grep inactive

将把 的输出连接lpstat到 的输入grep,然后打印包含该字符串的那些行不活跃的

打印包含以下内容的行单词 不活跃的(IE,不活跃的由空格、逗号等包围),您可以添加一个选项:

lpstat -p myprinter | grep -w inactive

但是,您想要执行测试。您需要知道,grep每当它找到该单词时,都会生成“成功”退出值(实际上,它是 0)。这可以用于测试。您对命令的输出也不感兴趣grep,只对成功状态感兴趣。因此,让我们grep保持安静,并围绕它进行一个测试:

if lpstat -p myprinter | grep -q -w inactive
then
    mail -s "printer is inactive" othin
fi

这是你的阅读作业:https://www.man7.org/linux/man-pages/man1/grep.1.html

相关内容