Быстрый, портативный способ запуска Perl-скрипта на Mac (эквивалент Batch on Win) - PullRequest
1 голос
/ 27 января 2012

У меня есть сценарий perl, который используется в репозитории несколькими пользователями на компьютерах Mac и Windows. Он выполняет свою работу с файлами, расположенными в папке с ним. Поскольку я запускаю его часто, а некоторые пользователи даже не знают, что такое командная строка, я создал пакетный файл в каталоге, чтобы его было легко запускать. Поскольку некоторые пути будут отличаться, я сделал это переносимым:

    ::figure out your directory path
    pushd %~dp0
    :: launch the script
    perl my_perl_script.pl
    popd

Пакет отлично работает в Windows, и я помещаю его в каждую папку проекта с каждым скриптом perl и говорю своим пользователям просто «дважды щелкнуть эту штуку».

Как я могу сделать то же самое на Mac? Я не знаю много о Bash, и я не могу понять, как

1) Пусть bash-файл определит путь к каталогу, а
2) Сделайте bash простым исполняемым файлом «дважды щелкните по этой штуке» для моих пользователей Mac.

Будет ли простой Applescript лучше (я тоже не знаю Applescript ...)

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Спасибо, DJ Bazzie Wazzie. Я не хотел запускать bash и applecript для запуска моего perl, но я использовал вашу первую строку, чтобы получить appleScript, который отлично работает для меня.

    set currentWorkingDirectory to do shell script "dirname " & quoted form of POSIX path of (path to me) 
    tell application "Terminal"
    set currentTab to do script "cd " & currentWorkingDirectory
    do script "perl xml2epub_3689_7KeysSpWellness.pl" in currentTab 
    end tell

1 Ответ

1 голос
/ 27 января 2012

С AppleScript у вас есть возможность запустить команду оболочки. Допустим, ваш bash-файл расположен рядом со сценарием и называется maintenance.sh. Ваш сценарий будет выглядеть примерно так

set currentWorkingDirectory to do shell script "dirname " & quoted form of POSIX path of (path to me)
do shell script quoted form of (currentWorkingDirectory & "/maintenance.sh")

РЕДАКТИРОВАТЬ: (Я не могу комментировать ваше сообщение, поэтому я изменяю свое сообщение) Для такой простой команды, как ваша, вам не нужно терминальное приложение. Я могу понять, что рабочего приложения достаточно, но для более плавного сценария я бы поместил эту команду в сценарий do shell. Таким образом, код вашей команды будет выглядеть примерно так:

set currentWorkingDirectory to do shell script "dirname " & quoted form of POSIX path of (path to me)
do shell script "perl " & quoted form of (currentWorkingDirectory & "/xml2epub_3689_7KeysSpWellness.pl")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...