【问题标题】:Combining couple of commands inside the bash / python script在 bash / python 脚本中组合几个命令
【发布时间】: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,但并非所有程序都可以与外部邮件服务器一起使用。 muttswak 似乎很有趣 - 他们甚至可以发送附件。
  • 你可以使用命令wc -l (word count with option to count only lines) 来计算文件中的行数——你可以在bash中使用if/then/fi - 即@ 987654322@。很快:您可以使用 Google 找到所有内容。

标签: python linux bash scripting


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2014-10-04
    相关资源
    最近更新 更多