我需要在 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。