/ / как да предавам аргументи от командния ред на програма, изпълнявана с командата open? - macos, баш

как да преминете аргументи от командния ред към програма, изпълнена с отворена команда? - Мако, Баш

Има ли начин за предаване на аргументи на програма, която се изпълнява чрез:

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

Опитах:

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

Но това се тълкува като казване на терминала да се отвори ~/my_executable ~/arg1 ~/arg2.

Опитах:

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

Но той взима arg1 и arg2, сякаш те са част от пътя, а не аргументи.

Опитах:

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

Аз също се опитах:

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

Но с този флаг аргументите се предават на терминала.

ЗАБЕЛЕЖКА

Имам право да променя аргументите само на Terminal.app (частта в []):

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

Отговори:

7 за отговор № 1

Може би най-лесният начин е да създадете временен скрипт на черупката, напр.

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

4 за отговор № 2

Можете да намерите своя отговор, като стартирате open без аргументи:

% 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.

[...]

Можете да видите, че има опция --args можете да го използвате по следния начин:

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

Тествах го на el Capitan (10.11.3), така че не знам дали опцията присъства в по-ранни версии.


0 за отговор № 3

Да, знам. трябва да управлявате друг скрипт. но мислете по различен начин. работите не на терминал, а на редактор на скриптове. (не bash скриптове, но 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