web-dev-qa-db-fra.com

comment passer des arguments de ligne de commande à un programme exécuté avec la commande open?

Y at-il un moyen de passer des arguments à un programme en cours d'exécution via:

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

J'ai essayé:

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

Mais ceci est interprété comme indiquant au terminal d'ouvrir ~/my_executable ~/arg1 ~/arg2.

J'ai essayé:

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

Mais il récupère arg1 et arg2 comme s'ils faisaient partie du chemin plutôt que des arguments.

J'ai essayé:

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

J'ai aussi essayé:

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

Mais avec ce drapeau, les arguments sont transmis au terminal.

REMARQUE

Je suis seulement autorisé à changer les arguments en Terminal.app (la partie entre []):

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

Le moyen le plus simple consiste probablement à créer un script Shell temporaire, par exemple.

$ 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

Oui je sais. besoin de gérer un autre script ... mais de penser différemment. vous ne travaillez pas sur Terminal, mais sur l'éditeur de script . (pas de script bash, mais d'AppleScript)

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