Fez*_*ezZ 7 diff shell-script file-comparison
当我设置-s
参数时,diff
也会打印不同的文件。
diff -s $FIRST_FILE $SECOND_FILE
Run Code Online (Sandbox Code Playgroud)
Unix 的理念是每个作业有一个工具,而 shell 将它们粘合在一起。所以:一种比较的工具,一种获得所需输出格式的工具。
在这种情况下,输出格式足够简单,这部分可以直接用 shell 完成。
要比较两个文件,如果您只关心它们是否具有相同的内容而不是列出差异,请使用cmp
.
if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi
Run Code Online (Sandbox Code Playgroud)
默认情况下,diff
当给出相同的文件时是静默的;这是其行为-s
发生变化的唯一方面。所以总是比较文件,输出差异;-s
当文件相同时,它也会输出一条消息,没有-s
它根本没有提到相同的文件。
您可以通过组合-q
和来获得我认为您正在寻找的行为-s
;-q
指示diff
仅指示文件不同(当它们不同时),而不详细说明差异。
下面是一个例子:
$ echo 1 > a
$ echo 2 > b
$ echo 2 > c
$ diff -qs a b
Files a and b differ
$ diff -qs b c
Files b and c are identical
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案可能是:
diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
echo "The files are identical"
fi
Run Code Online (Sandbox Code Playgroud)
注意:它更改了问题文本。