2017-11-02 1 views
1

diff unterstützt Optionen, die von diff3 auf macOS Sierra nicht unterstützt werden. Beispiel: diff unterstützt die Option -b, um Leerraumänderungen zu ignorieren, aber diff3 nicht.Übergeben von Optionen an diff-Befehl bei Verwendung von diff3

Allerdings unterstützt diff3 die Option --diff-program, die verwendet werden kann, um ein Programm zu übergeben, das diff mit den gewünschten Optionen aufruft.

Als solche, habe ich ein Programm mydiff wie folgt aus:

diff -b $1 $2 

aber wenn diff3 --diff-program=./mydiff left.txt base.txt right.txt auf der Kommandozeile ausgeführt wird, bekam ich folgende Fehlermeldung:

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

Wie dieses Problem gelöst werden kann?

Gibt es eine Möglichkeit zu vermeiden mydiff zu erstellen und übergeben Sie die Optionen direkt in der Befehlszeile durch die Einstellung --diff-program=... irgendwie?

Dank

Antwort

1

Das Problem ist, dass diff3 die angegebene diff Befehl mit diesen Parametern aufrufen: --horizon-lines=100 -- F1 F2 wo F1 und F2 Dateiparameter sind. Die Art und Weise geschrieben Sie mydiff, wenn Sie diff3 --diff-program=./mydiff left.txt base.txt right.txt ausführen, wird diese ausgeführt werden sollen:

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

Wenn Sie dies ausführen, können Sie die gleichen Fehler zu bekommen.

Der richtige Weg mydiff zu schreiben:

#!/bin/sh 

diff -b "[email protected]" 

Und nein, leider gibt es keine Möglichkeit diff -b irgendwie inline zu schreiben, Sie benötigen ein spezielles Skript erstellen, um es mit diff3 zu arbeiten.

Verwandte Themen