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)
注意:它更改了问题文本。