【发布时间】:2021-07-20 07:37:12
【问题描述】:
我已经用几个命令完成了我的工作,但是我需要手动操作并且每次都必须观察工作。因此,我希望一切都自动完成,并且只有在发生所需结果时才应通知我。所以我的场景如下;
我使用脚本 stv.sh 创建结果
Cmd 1:>> timeout 15m ./stv.sh -parameter1 -parameter2 -output file file1.txt
我将原始 tex 文件中的必要字段放到另一个文件中
Cmd 2 : >> sed file1.txt -parameter1 -parameter2 -output file cleanfile1.txt
比我在我的文本文件中添加一个测试行
命令 3:>> cat testline.txt >> cleanfile1.txt
我将新文件与现有结果进行比较以找到任何匹配的行
命令 4:>> comm -12 myexistingresults.txt <(cat cleanfile1.txt | sort | uniq ) > matching.txt
现在,在 matching.txt 中,无论如何都会出现至少 1 个结果,因为我们已经在 Cmd 2 中包含了 testline.txt。但是如果多于一行,则需要运行下面的命令;
Cmd 5 : >> grep -A 2 $secondlineofmatchingtxt file1.txt > victory.txt
这意味着我找到了匹配的行。所以,在matching.txt中,如果有不止一行我需要以某种方式通知(通过发送电子邮件等),否则如果matching.txt中只有一行,脚本需要从Cmd开始再 1 次。
如何使用简单的 bash 或 python 脚本来建立这个目标?
【问题讨论】:
-
将所有命令放入文件中,您已经有了 bash 脚本。最终它可能需要
shebang在第一行#!/bin/bash并且您可能需要使其可执行chmod +x script- 然后您可以像任何其他程序一样运行script。 -
如果您询问如何发送电子邮件,那么有许多控制台程序可以发送邮件 - 请参阅16 Command Examples to Send Email From The Linux Command Line,但并非所有程序都可以与外部邮件服务器一起使用。
mutt或swak似乎很有趣 - 他们甚至可以发送附件。 -
你可以使用命令
wc -l(word countwith option to count onlylines) 来计算文件中的行数——你可以在bash中使用if/then/fi- 即@ 987654322@。很快:您可以使用 Google 找到所有内容。
标签: python linux bash scripting