我在path1和path2分别有两个文件。如果两个文件的内容相同,我想删除位于path2的文件。
我尝试使用
来实现这一点cmp -s path1 path2 rm path2 ||echo "files are different"
但它不起作用。为什么不呢?
你少了一个&&
。
cmp -s path1 path2 && rm path2 || echo "files are different"
我将使用if
/else
而不是&&
/||
在这里。如果rm
碰巧失败,上面的代码将错误地说"文件不同"。使用if
/else
可以避免这个问题。
if cmp -s path1 path2; then
rm path2
else
echo "files are different"
fi
(一般情况下,如果&&
之后的命令总是成功,则只使用&&
/||
。如果有可能失败,请坚持使用显式的if
/else
。