Ответ 1
Вероятно, самый простой способ - создать временную оболочку script, например.
$ echo "~/my_executable arg1 arg2" > /tmp/tmp.sh ; chmod +x /tmp/tmp.sh ; open -a Terminal /tmp/tmp.sh ; rm /tmp/tmp.sh
Есть ли способ передать аргументы программе, запущенной через:
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]
Вероятно, самый простой способ - создать временную оболочку script, например.
$ echo "~/my_executable arg1 arg2" > /tmp/tmp.sh ; chmod +x /tmp/tmp.sh ; open -a Terminal /tmp/tmp.sh ; rm /tmp/tmp.sh
Вы можете найти свой ответ, запустив 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 main() function instead of opened.
[...]
Вы можете видеть, что есть опция --args
, которую вы можете использовать так:
open ./Untitled.app --args arg1 arg2 arg3
Я тестировал его на El Capitan (10.11.3), поэтому не знаю, присутствует ли опция в более ранних версиях.
Да, я знаю. необходимо управлять другим script. но думают иначе. вы работаете не в терминале, а в редакторе Script. (не bash сценариев, но 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