我正在使用此命令将文件导入我的服务器:
scp zumodo@shold:/test/test/test/server.py /test/test/test/test.py~/;
如果新导入的文件test.py~与已存在的test.py不同,我想重新启动我的服务器。我怎么用shellcript做到这一点?
答案 0 :(得分:48)
if ! cmp test.py test.py~ >/dev/null 2>&1
then
# restart service
fi
打破这一点:
cmp test.py test.py~
返回true(0),否则返回false(1)。您可以在man cmp
。!
反转了该结果,因此if
语句转换为“如果test.py和test.py~不同”。>/dev/null 2>&1
会将cmp
的所有输出发送到null device,因此您只需获得真/假比较结果,而不会在控制台上产生任何不必要的噪音。答案 1 :(得分:7)
你可以diff()这两个文件。返回码为零(0)表示没有差异。返回码为一(1)表示文件不同。
答案 2 :(得分:0)
我会做类似
的事情zumodo@shold$ cat /test/test/test/server.py | ssh zumodo@otherhost '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)'