【发布时间】:2016-12-21 14:01:58
【问题描述】:
我正在一个文件上创建 bash 脚本以通过邮件发送diff。
对于以下情况,我创建了两个文件作为"xyz.conf" 和"xyz.conf_bkp" 进行比较
到目前为止,我已经提供了以下脚本 -
file="/a/b/c/xyz.conf"
while true
do
sleep 1
cmp -s $file ${file}_bkp
if [ $? > 0 ]; then
diff $file ${file}_bkp > compare.log
mailx -s "file compare" abc@xyz.com < compare.log
sleep 2
cp $file ${file}_bkp
exit
fi
done
我已经安排上面的脚本每秒运行一次
* * * * 0-5 script.sh
这工作正常,但我正在寻找不同的方法,如下所示 - 我希望在不创建另一个备份文件的情况下工作
谁能建议,如何实施这种方法?
【问题讨论】:
-
使用管道.....
-
如果您想比较可能更改的文件,备份似乎是必要的。您想避免创建
compare.log吗? -
嗨@chepner,compare.log 我用来通过邮件向我发送差异。我们可以避免它并将差异直接发送到邮件而不是写入文件吗?但是如果发现很多差异,那么在不使用文件的情况下很难发送那么多差异 o/p。如果可能,请告诉我
-
查看我的答案,我将
diff的(最终)输出直接传送到mailx,而不是将其写入磁盘。 -
没有像“$file”这样的选项吗?我可以用一些“2|5 秒前”保存 -> 将它保存到 var 然后比较这两个 var。像下面的 \n $file="xyz.conf" 和 $file1="$file 前 5 秒",然后做 diff $file1 $file.我已经检查了一些存储日期的链接,但我的方法没有关闭..
标签: bash shell scripting diff cmp