how to pass command-line arguments to a program run with the open command?

前端 未结 3 1085
日久生厌
日久生厌 2020-12-05 10:23

Is there a way to pass arguments to a program being run via:

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

I have tried:

相关标签:
3条回答
  • 2020-12-05 11:05

    Probably the easiest way is to create a temporary shell script, e.g.

    $ echo "~/my_executable arg1 arg2" > /tmp/tmp.sh ; chmod +x /tmp/tmp.sh ; open -a Terminal /tmp/tmp.sh ; rm /tmp/tmp.sh
    
    0 讨论(0)
  • 2020-12-05 11:08

    You can find your answer by running open without arguments:

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

    [...]

    You can see there is an option --args you can use it like this:

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

    I tested it on el Capitan (10.11.3) so I don't know if the option is present in earlier versions.

    0 讨论(0)
  • 2020-12-05 11:17

    Yes, I know. need to manage another script. but think differently. you work not on Terminal, but on Script Editor. (not bash scripting, but 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
    
    0 讨论(0)
提交回复
热议问题