【问题标题】:How to pass options to diff command when using diff3使用 diff3 时如何将选项传递给 diff 命令
【发布时间】:2017-11-02 17:20:14
【问题描述】:

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

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

因此,我创建了一个程序mydiff,如下所示:

diff -b $1 $2

但在命令行上运行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

如何解决?

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

谢谢

【问题讨论】:

    标签: git bash command-line compare diff


    【解决方案1】:

    问题在于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 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多