【发布时间】:2015-11-22 19:06:06
【问题描述】:
我有如下文件。我每 5 分钟使用一次 crontab 检查文件,看看系统是否添加了一个文件,例如:AIR_2015xxxxT0yyyyyyyy.cfg。然后我需要在最后一个和最后一个之前自动使用diff命令。
AIR_20151021T163514000.cfg
AIR_20151026T103845000.cfg
AIR_2015xxxxT0yyyyyyyy.cfg
我想在如下脚本中执行此操作:
#!/bin/bash
/var/opt/fds/
diff AIR_2015xxxxT0yyyyyyyy.cfg AIR_20151026T103845000.cfg > Test.txt
body(){
cat body.txt
}
(echo -e "$(body)") | -a Test.txt mailx -s 'Comparison' user@email.com
【问题讨论】:
-
那么...运行脚本时会出现什么错误?还是您只是在编写类似 shell 的元代码并希望其他人能完成繁重的工作?
-
@ghoti 实际上我认为你没有很好地阅读我的问题我每天都有很多文件,我想在最后一个文件和上次之前使用 diff 命令。
-
大多数系统没有命令
-a,所以这会带来问题。您对body函数的使用很奇特;你应该可能使用类似的东西:mailx -a Test.txt -s 'Comparison' user@email.com < body.txt。但是还有很多工作要做,以确保您选择最新的以前的文件,而不是硬编码。您有一个完全固定的电子邮件正文,这有点奇怪。我还建议在文件附件的名称中使用日期/时间。 -
@JonathanLeffler 我亲爱的电子邮件没有问题我可以收到电子邮件但我的问题是差异我无法自动完成例如在每次修改后比较 2 个文件的最后一个和最后一个之前
-
最新的文件名是否真的包含一个x序列和一个y序列,或者你正在寻找最新的文件和前一个文件,两者都有系统名称?查看数字名称是否足以确定最新的名称,还是我们必须担心名称“较旧”的文件比名称“较新”的文件被修改得更晚?如果新文件有 x 和 y,什么代码负责将其重命名为全数字名称?给定使用 ISO 8601 表示法(或多或少)的系统名称,按简单排序顺序的名称在最后。