Я хотел бы знать самый простой способ создания bash-скрипта, который будет запускать приложение в MacOSX (это система на основе UNIX, поэтому я предположил, что это правильное место). дождитесь выхода программы. Если выход не был сбоем, запустите его снова. В противном случае оставьте окно отчета о сбое открытым и выйдите.
Я бы хотел, чтобы этот скрипт работал вечно, пока не произойдет сбой или ручное завершение.
У меня есть смутная идея, но я не уверен. Вот что у меня так далеко:
echo "Launching Autorun…"
if ["$1" -eq "0"]; then
# Application exited successfully. Restarting.
/path/to/application.app
else
# An error occured. Do nothing and exit.
exit
fi
bash
shell-script
osx
Бен сошел с ума Euden
источник
источник
Ответы:
Вот что делают циклы Bash while :
Он запустит приложение и, если оно успешно завершится, запустит тело цикла.
:
является командой оболочки no-op (цикл должен иметь тело, вот что мы туда поместили); после этого он возвращается наверх и снова запускает программу. Если это не удается, цикл останавливается и скрипт завершается.Однако, похоже, что то, что вы запускаете, может быть обычным приложением Mac (
.app
): в этом случае возникает пара проблем. Во- первых, вам нужно использоватьopen
команду , а не работает каталог приложений непосредственно:open /path/to/application.app
.Другое - то, что когда вы это делаете
open
, обычно сразу завершается успешно, независимо от того, что приложение продолжает делать: это не совсем универсально, но большинство так и будет. Если один делает, вы можете использовать-W
опцию , чтобы заставитьopen
не блокировать до конца приложения:open -W /path/to/application.app
. Обратите внимание, что если приложение уже запущено, оно будет ждать, пока существующее выполнение также не прекратится.Насколько серьезна проблема, зависит от того, какое приложение вы используете. Если это не очень хорошо, делать это из оболочки, возможно, не лучший вариант. В этом случае вам, вероятно, лучше использовать AppleScript, о котором вы можете спросить в Ask Different .
источник
open
возвращается только сбой при определенных ошибках запуска. Приложения запускаются системной службой, а не напрямую, поэтому прямого канала связи нет. Иногда это возможно , чтобы запустить исполняемый файл приложения непосредственно:/Applications/YourProgram.app/Contents/MacOS/YourProgram
. В противном случае мы выходим из Unix и в те места, где вы получите лучший ответ на Ask Different . Вы можете запустить AppleScript из оболочки с помощьюosascript
Я проверил это:
Это работает путем тестирования кода возврата вашей команды в стиле POSIX. 0 означает, что все остальное можно считать ошибкой.
источник