在 bash / python 脚本中组合几个命令

问题描述

我已经用几个命令完成了我的工作,但是我需要手动操作并且每次都必须观察工作。所以我希望一切都自动完成,只有在出现预期结果时才应该通知我。所以我的场景如下;

我用我的脚本 stv.sh 创建结果

命令 1:>> timeout 15m ./stv.sh -parameter1 -parameter2 -output file file1.txt

然后我从原始 tex 文件获取必要的字段到另一个文件

命令 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 个结果,因为我们已经将 testline.txt 包含在 Cmd 2 中。但是如果不止一行,则需要运行下面的命令;

命令 5:>> grep -A 2 $secondlineofmatchingtxt file1.txt > victory.txt

这意味着我找到了匹配的行。所以,在matching.txt中,如果有不止一行我需要以某种方式得到通知(通过发送电子邮件等),否则如果matching.txt中只有一行,脚本需要从Cmd开始1 次。

如何使用简单的 bash 或 python 脚本来建立这个目标?

解决方法

创建一个文件,在文件顶部添加解释器,#!/bin/bash,然后将所有命令输入一个文件,允许对该文件的可执行权限,然后运行该文件。

对于电子邮件部分,您可能希望使用脚本 ./stv.sh 文件的退出代码。成功运行此脚本后,找到退出代码,并创建一个if语句来测试退出代码是否匹配,如果匹配,则将发送电子邮件。否则,另一种方法是检查 file1.txt 是否存在,但这可能不准确。