使用 diff3 时如何将选项传递给 diff 命令

How to pass options to diff command when using diff3

diff 支持 macOS Sierra 上 diff3 不支持的选项。例如,diff 支持 -b 选项以忽略白色 space 更改,但 diff3 不支持。

但是,diff3 支持选项 --diff-program,我想它可以用来传递一个程序,该程序将使用所需的选项调用 diff

因此,我创建了一个这样的程序 mydiff

diff -b  

但是当在命令行上运行 diff3 --diff-program=./mydiff left.txt base.txt right.txt时,我得到了以下错误:

diff: missing operand after `--'
diff: Try `diff --help' for more information.
diff3: subsidiary program `./mydiff' failed

如何解决?

有没有办法避免创建 mydiff 并通过某种方式设置 --diff-program=... 直接在命令行中传递选项?

谢谢

问题是 diff3 将使用这些参数调用指定的 diff 命令: --horizon-lines=100 -- F1 F2 其中 F1F2 是文件参数。你写 mydiff 的方式,当你 运行 diff3 --diff-program=./mydiff left.txt base.txt right.txt 时,这将被执行:

diff -b --horizon-lines=100 --

如果你运行这个,你会得到同样的错误。

正确的写法mydiff

#!/bin/sh

diff -b "$@"

不,不幸的是没有办法以某种方式内联编写 diff -b, 您需要创建一个专用脚本以使其与 diff3.

一起使用