Как открыть приложение AppleScript с аргументами

У меня есть AppleScript, который запускает программу сканирования (командная строка), которая сканирует в определенную папку. Мне нужно передать аргументы в applescript, который, в свою очередь, передает Аргументы терминалу.

в терминале я хочу работать open -a /Applications/MyScanApp.app myargument и запускается AppleScript. Как я могу принять этот аргумент? Спасибо за помощь! Я обычно программист PHP, и это что-то совершенно другое для меня.

Мой AppleScript:

tell application "Terminal"
    do script "./myscanprogram myargument 2>&1"
end tell

2 ответов


почему никто не упомянул quoted form of? Если вы хотите отправить произвольные данные в качестве аргумента в приложение, вы должны использовать цитируемую форму. Когда кавычки, пробелы и другие специальные символы находятся в данном пути, команда будет разбита в предыдущих примерах.

on run argv
    tell application "Terminal"
        do script "./myscanprogram " & quoted form of (item 1 of argv) & " 2>&1"
    end tell
end run

поскольку вы упомянули, что вы новичок в AppleScript, он должен работать в терминале.app или достаточно оболочки? AppleScript имеет команду do shell script который открывает оболочку, выполняет текст и возвращает stdout назад к вам.

on run argv
   do shell shell script "/path/to/myscanprogram " & quoted form of (item 1 of argv) & " 2>&1"
end run

последнее, но не менее. Если вы не хотите вывод программы сканирования и не хотите, чтобы AppleScript ждал, пока он не будет завершен, вы можете использовать

on run argv
   do script "/path/to/myscanprogram " & quoted form of (item 1 of argv) & " &>/dev/null &"
end run

интересно, почему вы используете свой терминал для обращения к AppleScript, который снова использует терминал, но, возможно, я просто не знаю ваших обстоятельств...

Applescript:

on run argv
    tell application "Terminal"
        do script "./myscanprogram " & (item 1 of argv) & " 2>&1"
    end tell
end run

позвонили из osascript внутри вашего терминала:

osascript pathToYourScript.scpt myargument

хорошего дня, Майкл / Гамбург