6

cmp file1 file2当文件相同时什么都不做。那么如何在 shell 脚本中打印出相同的文件呢?

4

3 回答 3

7

如果文件相同,则退出状态cpm为零,否则为非零。因此,您可以使用类似的东西

cmp file1 file2 && echo "Files are identical"

如果要保存退出状态,可以改用以下内容:

cmp file1 file2
status=$?
if [[ $status = 0 ]]; then
    echo "Files are the same"
else
    echo "Files are different"
fi
于 2014-05-02T13:23:45.027 回答
2

使用 的退出状态码cmp。退出代码 0 表示它们相同:

$ cmp file1 file2; echo $?
0

在脚本中,您可以执行以下操作:

cmp file1 file2 && echo "same"
于 2014-05-02T13:24:07.690 回答
0

如果只需要显示结果,还可以使用diff -q -s file1 file2

  • -q选项 (AKA --brief)的diff工作方式与 类似cmp,因此它只检查文件是否不同或相同,而不识别更改(注意:我不知道这和 之间是否存在性能差异cmp)。
  • -s选项 (AKA --report-identical-files) 使其显示“文件 file1 和 file2 相同”消息,而不是不提供任何输出。当文件不同时,会显示“文件 file1 和 file2 不同”消息(假设-q已使用)。

资源

于 2021-09-09T15:16:44.937 回答