Ответ 1
Вы можете разделить() два файла. Код возврата 0 (0) означает отсутствие различий. Код возврата одного (1) говорит, что файлы отличаются.
Я импортирую файл на свой сервер с помощью этой команды:
scp [email protected]:/test/test/test/server.py /test/test/test/test.py~/;
Я хочу перезагрузить свой сервер, если новый импортированный файл test.py ~ отличается от уже существующего test.py. Как мне сделать это с помощью shellscript?
Вы можете разделить() два файла. Код возврата 0 (0) означает отсутствие различий. Код возврата одного (1) говорит, что файлы отличаются.
if ! cmp test.py test.py~ >/dev/null 2>&1
then
# restart service
fi
Нарушение этого:
cmp test.py test.py~
возвращает true (0), если test.py и test.py ~ идентичны, иначе false (1). Вы можете увидеть это в man cmp
.!
инвертирует результат, поэтому оператор if
преобразуется в "если test.py и test.py ~ разные".>/dev/null 2>&1
отправляет весь вывод cmp
в null device, так что вы получите только результат сравнения true/false, без каких-либо нежелательных помех на консоли.Я бы сделал что-то вроде
[email protected]$ cat /test/test/test/server.py | ssh [email protected] 'cat - > /test/test/test/test.py.new ; cmp /test/test/test/test.py /test/test/test/test.py.new || (mv /test/test/test/test.py.new /test/test/test/test.py ; echo issue restart command here)'