Невозможно использовать diff и не может использовать cmp.bash сравнить содержимое двух файлов и на основании результатов сделать два разных действия
Мы с успехом используем comm, но я не получаю правильные результаты при использовании с условным сценарием.
#!/bin/bash
# http://stackoverflow.com/a/14500821/175063
comm -23 <(sort /home/folder/old.txt) <(sort /home/folder/new.txt)
if [ $? -eq 0 ];then
echo "There are no changes in the files"
else
echo "New files were found. Return code was $?"
fi
Он всегда возвращается:
Там нет никаких изменений в файлах
как команда комм, работает успешно, но содержимое файлов различны.
Я очень ограничен относительно того, что можно добавить на этот сервер, поскольку это корпоративная коробка LINUX.
'comm' всегда возвращает 0 даже при ошибке, например, файл не найден. Вам нужно проверить stdout, чтобы увидеть, есть ли 'comm'. – alvits
Как выглядят файлы? Вы знаете, что '$?' - это статус выхода последнего процесса, а не количество строк? – dawg
То же самое на '$?'. Кроме того, 'comm -23' возвращает строку в old.txt, которая не находится в файле new.txt. Строки в файле new.txt, которые не находятся в old.txt, игнорируются. Это то, что вы хотите? – John1024