Wie codiere ich einen Bindestrich im Öffnungsbefehl eines Bash-Terminals?

765
Luc Bloom

Ich versuche ein kleines Skript zu schreiben, das Beyond Compare startet, wenn ich einen svn diff mache. Ich habe es bis jetzt so weit gebracht:

open -a /Applications/Beyond\ Compare.app "$6" "$7" 

Um die volle Funktionalität zu erhalten, muss ich Argumente mit einem Bindestrich (-, Bindestrich, Minuszeichen) hinzufügen.

open -a /Applications/Beyond\ Compare.app "$6" "$7" -title1="$3" -title2="$5" -readonly 

Wenn ich das tue, interpretiert der Befehl open die Bindestriche jedoch als Flags für sich selbst und endet mit:

open: invalid option -- i usage: ... 

Ich habe versucht, den gesamten Befehl zu "zitieren" oder - den Optionen zu entgehen. Was muss ich tun, um die zusätzlichen Funktionen zu erhalten?

2
Ich bin nicht mit OS X vertraut, aber da Sie scheinbar bash benutzen: Können Sie denen mit einer Backslah nicht entkommen? Verwenden Sie beispielsweise "open -a / Applications / Beyond \ Compare.app" $ 6 "" $ 7 "\ -title1 =" $ 3 "\ -title2 =" $ 5 "\ -readonly`? Hennes vor 9 Jahren 0

1 Antwort auf die Frage

0
chaos

Siehe die offene Manpage:

 --args All remaining arguments are passed to the opened application in the argv parameter to main(). These arguments are not opened or interpreted by the open tool. 

Ihr Befehl würde also so aussehen:

open -a /Applications/Beyond\ Compare.app "$6" "$7" --args -title1="$3" -title2="$5" -readonly