it-swarm.com.de

wie übergebe ich Befehlszeilenargumente an ein Programm, das mit dem Befehl open ausgeführt wird?

Gibt es eine Möglichkeit, Argumente an ein Programm zu übergeben, das über Folgendes ausgeführt wird:

open -a /Applications/Utilities/Terminal.app ~/my_executable

Ich habe versucht:

open -a /Applications/Utilities/Terminal.app ~/my_executable arg1 arg2

Dies wird jedoch so interpretiert, dass das Terminal aufgefordert wird, ~/my_executable ~/arg1 ~/arg2. zu öffnen.

Ich habe versucht:

open -a /Applications/Utilities/Terminal.app '~/my_executable arg1 arg2'

Aber es nimmt arg1 und arg2 auf, als ob sie Teil des Pfades und nicht Argumente wären.

Ich habe versucht:

open -a /Applications/Utilities/Terminal.app ~/my_executable | xargs arg1 arg2

Ich habe auch versucht:

open -a /Applications/Utilities/Terminal.app ~/my_executable --args arg1 arg2

Mit diesem Flag werden die Argumente an das Terminal übergeben.

HINWEIS

Ich darf nur die Argumente in Terminal.app ändern (der Teil in []):

open -a /Applications/Utilities/Terminal.app [~/my_executable arg1 arg2]
15

Am einfachsten ist es wahrscheinlich, ein temporäres Shell-Skript zu erstellen, z.

$ echo "~/my_executable arg1 arg2" > /tmp/tmp.sh ; chmod +x /tmp/tmp.sh ; open -a Terminal /tmp/tmp.sh ; rm /tmp/tmp.sh
7
Paul R

Sie können Ihre Antwort finden, indem Sie open ohne Argumente ausführen:

% open Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-b <bundle identifier>] [-a <application>] [filenames] [--args arguments]

[...]

--args All remaining arguments are passed in argv to the application's main() function instead of opened.

[...]

Sie können sehen, dass es eine Option --args gibt, die Sie wie folgt verwenden können:

open ./Untitled.app --args arg1 arg2 arg3

Ich habe es auf el Capitan (10.11.3) getestet, daher weiß ich nicht, ob die Option in früheren Versionen vorhanden ist.

9
Enrico

Ja, ich weiß. Sie müssen ein anderes Skript verwalten. , aber denken Sie anders. Sie arbeiten nicht mit Terminal, sondern mit Script Editor. (nicht Bash-Scripting, sondern AppleScript'ing)

property testScript : "/tmp/sh.sh"

set input to display dialog "args?" default answer ""
log input
tell application "Terminal"
    activate
    do script testScript & " " & text returned of input
end tell
1
Zetton Nara