2012-07-01 3 views
4

Мне было интересно, возможно ли приложение applescript запустить сценарий оболочки, а затем выйти до завершения выполнения сценария оболочки. Это было бы полезно при запуске сервера за определенное количество времени. Вместо того, чтобы яблоки постоянно работали в фоновом режиме, можно ли каким-либо образом запустить функцию самостоятельно?Выйти из приложения applescript после выполнения сценария оболочки

set server_name to text returned of (display dialog "Choose server." default answer "") 
set success to do shell script "if [ -f \"/Users/jessefrohlich/Documents/Minecraft/" & server_name & "/minecraft_server.jar\" ]; then 
    echo 1; 
else 
    echo 0; 
fi" 
if success is equal to "1" then 
    do shell script "cd /Users/jessefrohlich/Documents/Minecraft/" & server_name & " 
    java -Xmx1024M -Xms1024M -jar minecraft_server.jar" 
else 
    display dialog "Sorry, the file you chose is invalid." 
end if 

Когда вышеуказанное запущено как приложение, оно запустит сервер должным образом. Однако приложение runScript.app будет продолжать работать. Сервер будет продолжать работать, даже если applescript - это принудительное завершение. Есть ли способ, чтобы он автоматически прекращался, как только сервер запускался?

Thanks

ответ

4

Попробуйте это. Удачи.

-- "> /dev/null" redirects standout out to nowhere land 
--  - you can use some other file path if you want to capture its output 
-- "2>&1" redirects standard error to the same place as standard out 
--  - 2 stands for standard error 
--  - 1 stands for standard out 
--  - > is the redirect symbol 
--  - & changes redirect's output from a file to a file descriptor (in this case standard out) 
-- & the trailing & sends the process to the background 

do shell script "cd /Users/jessefrohlich/Documents/Minecraft/" & server_name & " java -Xmx1024M -Xms1024M -jar minecraft_server.jar > /dev/null 2>&1 &" 
+0

Спасибо за помощь! – Phro

1

Вы можете добавить условие к вашему Applescript, чтобы он «игнорировать ответы приложений», и она будет идти на все остальное в вашем AppleScript, в том числе отказа от курения его.

Яблоко Сайт содержит информацию: https://developer.apple.com/library/mac/#documentation/applescript/conceptual/applescriptlangguide/reference/ASLR_control_statements.html

+2

'игнорирование ответов приложений'. Этот оператор управления не работает для команды' do shell script'. – jackjr300

+0

Спасибо, я не знал об этом. Правильный метод заключается в том, чтобы поместить сценарий в фоновом режиме и перенаправить ответы на файл или/dev/null. См. Раздел «Другие проблемы» здесь: https://developer.apple.com/library/mac/technotes/tn2065/_index.html – Dave

Смежные вопросы