Я пишу скрипт, в котором хочу взять каждую строку из файла и проверить совпадение в другом файле. Если я найду совпадение, я хочу сказать, что я нашел совпадение, а если нет, то сказать, что я не нашел совпадения.
2 файла содержат хэши md5. Старый файл является исходным, а новый файл предназначен для проверки наличия каких-либо изменений по сравнению с исходным файлом.
исходный файл: chksum новый файл: chksum1
#!/bin/bash
while read e; do
while read f; do
if [[ $e = $f ]]
then
echo $e "is the same"
else
if [[ $e != $f]]
then
echo $e "has been changed"
fi
fi
done < chksum1
done < chksum
Моя проблема в том, что для файлов, которые были изменены, я получаю эхо каждый раз, когда выполняется проверка в цикле, и я хочу, чтобы он отображал файл только один раз и говорил, что он не найден.
Надеюсь, это понятно.
awkможет сделать это лучше. - person jaypal singh   schedule 14.06.2013diff?diff chksum chksum1сделает именно то, что вы хотите. - person Nikolai Popov   schedule 14.06.2013elseне нужно проверять, отличаются ли значения, потому что они точно есть. Просто повторите строку. - person TrueY   schedule 14.06.2013man bash(снова) и обнаружил, что${var:+val}и${var+val}ведут себя по-разному! - person TrueY   schedule 14.06.2013sortиuniq, ноdiffработает так же хорошо, если не лучше. - person Samveen   schedule 14.06.2013diffс опцией-q? - person Nikolai Popov   schedule 14.06.2013