Има ли начин за предаване на аргументи на програма, която се изпълнява чрез:
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