这里需要一些想法。我正在使用类似 if $[$x-$y>1500] then 等的东西来检测文件更改的大小。我意识到这不起作用,因为文件大小可能会增加或减少,这可能会导致负数。有没有办法使用xy的绝对值?
答案1
我已经做到了。我创建一个新文件(带有“.new”后缀),但在替换旧文件之前,我会检查文件的大小差异,如果更改太多,则中止(发送某种类型的通知,例如邮件)。
我通常在 Perl 中执行此操作,但 bash 也类似。
$file="file_being_updated";
$new=".new";
if ( -f $file ) {
my $percent_diff = abs( 100 - 100*(-s "$file$new")/(-s $file) );
if ( $percent_diff > 20 ) { # more that this to different!
printf STDERR "File \"$file$new\" differs by more that 20%%! (%.1f%%)\n", $percent_diff;
printf STDERR "-------------- ABORTING REPLACMENT -----------\n";
exit 10;
}
}
答案2
diff=$((x - y)
diff=$(( (diff > 0) ? $diff : -1*$diff ))
if [ $diff -gt 1500 ]
then
echo do something
fi