Здесь нужны идеи. Я использовал что-то вроде если $ [$ x- $ y> 1500] потом и т.д .... для определения размера изменений в файле. Я понял, что это не сработает, поскольку размеры файлов могут увеличиваться или уменьшаться, что может привести к отрицательному числу. Есть ли способ использовать абсолютное значение x-y?
diff=$((x - y)
diff=$(( (diff > 0) ? $diff : -1*$diff ))
if [ $diff -gt 1500 ]
then
echo do something
fi
Я сделал это. Я создаю новый файл (с суффиксом at «.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;
}
}